Mirror of git://git.busybox.net/busybox with our patches on top
Source
xxxxxxxxxx
static int do_add_ioctl(int cmd, const char *basedev, struct ip_tunnel_parm *p)
/* vi: set sw=4 ts=4: */
/*
* iptunnel.c "ip tunnel"
*
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*
* Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
*
*
* Changes:
*
* Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
* Rani Assaf <rani@magic.metawire.com> 980930: do not allow key for ipip/sit
* Phil Karn <karn@ka9q.ampr.org> 990408: "pmtudisc" flag
*/
/* #include "libbb.h" is inside */
/* Dies on error */
static int do_ioctl_get_ifindex(char *dev)
{
struct ifreq ifr;
int fd;
strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name));
fd = xsocket(AF_INET, SOCK_DGRAM, 0);
xioctl(fd, SIOCGIFINDEX, &ifr);
close(fd);
return ifr.ifr_ifindex;
}
static int do_ioctl_get_iftype(char *dev)
{
struct ifreq ifr;
int fd;
int err;
strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name));
fd = xsocket(AF_INET, SOCK_DGRAM, 0);
err = ioctl_or_warn(fd, SIOCGIFHWADDR, &ifr);
close(fd);
return err ? -1 : ifr.ifr_addr.sa_family;
}
static char *do_ioctl_get_ifname(int idx)
{
struct ifreq ifr;
int fd;
int err;
ifr.ifr_ifindex = idx;