diff options
-rw-r--r-- | include/libbb.h | 2 | ||||
-rw-r--r-- | networking/ifconfig.c | 10 | ||||
-rw-r--r-- | networking/interface.c | 100 |
3 files changed, 52 insertions, 60 deletions
diff --git a/include/libbb.h b/include/libbb.h index c79cd8b20..492a561a9 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -934,6 +934,8 @@ extern smallint interface_opt_a; int display_interfaces(char *ifname); #if ENABLE_FEATURE_HWIB int in_ib(const char *bufp, struct sockaddr *sap); +#else +#define in_ib(a, b) 1 /* fail */ #endif const struct aftype *get_aftype(const char *name); const struct hwtype *get_hwtype(const char *name); diff --git a/networking/ifconfig.c b/networking/ifconfig.c index 965fca344..e999741d1 100644 --- a/networking/ifconfig.c +++ b/networking/ifconfig.c @@ -252,20 +252,13 @@ static const struct options OptArray[] = { /* * A couple of prototypes. */ - #if ENABLE_FEATURE_IFCONFIG_HW static int in_ether(const char *bufp, struct sockaddr *sap); -# if ENABLE_FEATURE_HWIB -extern int in_ib(const char *bufp, struct sockaddr *sap); -# else -# define in_ib(a, b) 1 /* fail */ -# endif #endif /* * Our main function. */ - int ifconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int ifconfig_main(int argc, char **argv) { @@ -436,8 +429,7 @@ int ifconfig_main(int argc, char **argv) bb_show_usage(); /*safe_strncpy(host, *argv, sizeof(host));*/ host = *argv; - if (hw_class == 1 ? in_ether(host, &sa) - : in_ib(host, &sa)) + if (hw_class == 1 ? in_ether(host, &sa) : in_ib(host, &sa)) bb_error_msg_and_die("invalid hw-addr %s", host); p = (char *) &sa; } diff --git a/networking/interface.c b/networking/interface.c index abd58b582..efae03bf3 100644 --- a/networking/interface.c +++ b/networking/interface.c @@ -680,7 +680,6 @@ static int if_fetch(struct interface *ife) return 0; } - static int do_if_fetch(struct interface *ife) { if (if_fetch(ife) < 0) { @@ -1217,63 +1216,62 @@ static int if_print(char *ifname) /* Input an Infiniband address and convert to binary. */ int in_ib(const char *bufp, struct sockaddr *sap) { - unsigned char *ptr; - char c; - const char *orig; - int i; - unsigned val; - - sap->sa_family = ib_hwtype.type; - ptr = (unsigned char *) sap->sa_data; - - i = 0; - orig = bufp; - while ((*bufp != '\0') && (i < INFINIBAND_ALEN)) { - val = 0; - c = *bufp++; - if (isdigit(c)) - val = c - '0'; - else if (c >= 'a' && c <= 'f') - val = c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - val = c - 'A' + 10; - else { - errno = EINVAL; - return (-1); - } - val <<= 4; - c = *bufp; - if (isdigit(c)) - val |= c - '0'; - else if (c >= 'a' && c <= 'f') - val |= c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - val |= c - 'A' + 10; - else if (c == ':' || c == 0) - val >>= 4; - else { - errno = EINVAL; - return (-1); - } - if (c != 0) - bufp++; - *ptr++ = (unsigned char) (val & 0377); - i++; - - /* We might get a semicolon here - not required. */ - if (*bufp == ':') { - bufp++; + unsigned char *ptr; + char c; + const char *orig; + int i; + unsigned val; + + sap->sa_family = ib_hwtype.type; + ptr = (unsigned char *) sap->sa_data; + + i = 0; + orig = bufp; + while ((*bufp != '\0') && (i < INFINIBAND_ALEN)) { + val = 0; + c = *bufp++; + if (isdigit(c)) + val = c - '0'; + else if (c >= 'a' && c <= 'f') + val = c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + val = c - 'A' + 10; + else { + errno = EINVAL; + return -1; + } + val <<= 4; + c = *bufp; + if (isdigit(c)) + val |= c - '0'; + else if (c >= 'a' && c <= 'f') + val |= c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + val |= c - 'A' + 10; + else if (c == ':' || c == 0) + val >>= 4; + else { + errno = EINVAL; + return -1; + } + if (c != 0) + bufp++; + *ptr++ = (unsigned char) (val & 0377); + i++; + + /* We might get a semicolon here - not required. */ + if (*bufp == ':') { + bufp++; + } } - } #ifdef DEBUG -fprintf(stderr, "in_ib(%s): %s\n", orig, UNSPEC_print(sap->sa_data)); + fprintf(stderr, "in_ib(%s): %s\n", orig, UNSPEC_print(sap->sa_data)); #endif - return (0); + return 0; } #endif - int display_interfaces(char *ifname) { int status; |