X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Flibiproute%2Fiplink.c;h=2550c196e493ef2cae628fefe7e80d77f158f0c3;hb=007a01164705f3b086f5f4633e63a32d6c6e16c6;hp=33f38918a8b76874accec76d0f7e883ac9138ddf;hpb=2626ef613e04e6a97b601be5a582cac6766665c8;p=oweals%2Fbusybox.git diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c index 33f38918a..2550c196e 100644 --- a/networking/libiproute/iplink.c +++ b/networking/libiproute/iplink.c @@ -10,34 +10,40 @@ * */ -#include +#include +#include +#include + +#include #include +#include #include -#include -#include -#include -#include -#include -#include + +#include +#include +#include + +#if __GLIBC__ >=2 && __GLIBC_MINOR >= 1 +#include +#else #include -#include -#include -#include -#include -#include -#include +#endif #include "rt_names.h" #include "utils.h" #include "ip_common.h" -#include "busybox.h" +#include "libbb.h" + + +/* take from linux/sockios.h */ +#define SIOCSIFNAME 0x8923 /* set interface name */ static int do_link; static int on_off(char *msg) { - error_msg("Error: argument of \"%s\" must be \"on\" or \"off\"", msg); + bb_error_msg("Error: argument of \"%s\" must be \"on\" or \"off\"", msg); return -1; } @@ -90,6 +96,7 @@ static int do_chflags(char *dev, __u32 flags, __u32 mask) static int do_changename(char *dev, char *newdev) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) struct ifreq ifr; int fd; int err; @@ -107,6 +114,8 @@ static int do_changename(char *dev, char *newdev) } close(fd); return err; +#endif + return 0; } static int set_qlen(char *dev, int qlen) @@ -119,8 +128,8 @@ static int set_qlen(char *dev, int qlen) return -1; memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, dev); - ifr.ifr_qlen = qlen; + strcpy(ifr.ifr_name, dev); + ifr.ifr_qlen = qlen; if (ioctl(s, SIOCSIFTXQLEN, &ifr) < 0) { perror("SIOCSIFXQLEN"); close(s); @@ -128,7 +137,7 @@ static int set_qlen(char *dev, int qlen) } close(s); - return 0; + return 0; } static int set_mtu(char *dev, int mtu) @@ -141,8 +150,8 @@ static int set_mtu(char *dev, int mtu) return -1; memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, dev); - ifr.ifr_mtu = mtu; + strcpy(ifr.ifr_name, dev); + ifr.ifr_mtu = mtu; if (ioctl(s, SIOCSIFMTU, &ifr) < 0) { perror("SIOCSIFMTU"); close(s); @@ -150,7 +159,7 @@ static int set_mtu(char *dev, int mtu) } close(s); - return 0; + return 0; } static int get_address(char *dev, int *htype) @@ -161,7 +170,7 @@ static int get_address(char *dev, int *htype) int s; s = socket(PF_PACKET, SOCK_DGRAM, 0); - if (s < 0) { + if (s < 0) { perror("socket(PF_PACKET)"); return -1; } @@ -206,10 +215,10 @@ static int parse_address(char *dev, int hatype, int halen, char *lla, struct ifr if (alen < 0) return -1; if (alen != halen) { - error_msg("Wrong address (%s) length: expected %d bytes", lla, halen); + bb_error_msg("Wrong address (%s) length: expected %d bytes", lla, halen); return -1; } - return 0; + return 0; } static int set_address(struct ifreq *ifr, int brd) @@ -225,7 +234,7 @@ static int set_address(struct ifreq *ifr, int brd) return -1; } close(s); - return 0; + return 0; } @@ -288,7 +297,7 @@ static int do_set(int argc, char **argv) } if (!dev) { - error_msg("Not enough of information: \"dev\" argument is required."); + bb_error_msg("Not enough of information: \"dev\" argument is required."); exit(-1); } @@ -302,7 +311,7 @@ static int do_set(int argc, char **argv) } if (newbrd) { if (parse_address(dev, htype, halen, newbrd, &ifr1) < 0) - return -1; + return -1; } } @@ -311,18 +320,18 @@ static int do_set(int argc, char **argv) return -1; dev = newname; } - if (qlen != -1) { + if (qlen != -1) { if (set_qlen(dev, qlen) < 0) - return -1; + return -1; } - if (mtu != -1) { + if (mtu != -1) { if (set_mtu(dev, mtu) < 0) - return -1; + return -1; } if (newaddr || newbrd) { if (newbrd) { if (set_address(&ifr1, 1) < 0) - return -1; + return -1; } if (newaddr) { if (set_address(&ifr0, 0) < 0) @@ -338,7 +347,7 @@ static int ipaddr_list_link(int argc, char **argv) { preferred_family = AF_PACKET; do_link = 1; - return ipaddr_list(argc, argv); + return ipaddr_list_or_flush(argc, argv, 0); } int do_iplink(int argc, char **argv) @@ -353,6 +362,6 @@ int do_iplink(int argc, char **argv) } else return ipaddr_list_link(0, NULL); - error_msg("Command \"%s\" is unknown, try \"ip link help\".", *argv); + bb_error_msg("Command \"%s\" is unknown.", *argv); exit(-1); }