Mirror of git://git.busybox.net/busybox with our patches on top
Source
static int parse_address(char *dev, int hatype, int halen, char *lla, struct ifreq *ifr)
/* vi: set sw=4 ts=4: */
/*
* iplink.c "ip link".
*
* Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
*
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
/* take from linux/sockios.h */
/* set interface name */
static int on_off(char *msg)
{
bb_error_msg("error: argument of \"%s\" must be \"on\" or \"off\"", msg);
return -1;
}
static int get_ctl_fd(void)
{
int s_errno;
int fd;
fd = socket(PF_INET, SOCK_DGRAM, 0);
if (fd >= 0)
return fd;
s_errno = errno;
fd = socket(PF_PACKET, SOCK_DGRAM, 0);
if (fd >= 0)
return fd;
fd = socket(PF_INET6, SOCK_DGRAM, 0);
if (fd >= 0)
return fd;
errno = s_errno;
perror("Cannot create control socket");
return -1;
}
static int do_chflags(char *dev, __u32 flags, __u32 mask)
{
struct ifreq ifr;
int fd;
int err;
strncpy(ifr.ifr_name, dev, sizeof(ifr.ifr_name));
fd = get_ctl_fd();
if (fd < 0)
return -1;