udhcp: dname_dec may return NULL, account for that case
[oweals/busybox.git] / networking / brctl.c
index bd13878b29ebab56c4f49248d5988c22c5fb4b21..57074cd738b8a1e81a303daced06ef2f6ff6e8b5 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * Small implementation of brctl for busybox.
  *
- * Copyright (C) 2008 by Bernhard Fischer
+ * Copyright (C) 2008 by Bernhard Reutner-Fischer
  *
  * Some helper functions from bridge-utils are
  * Copyright (C) 2000 Lennert Buytenhek
 #include <linux/sockios.h>
 #include <net/if.h>
 
+#ifndef SIOCBRADDBR
+# define SIOCBRADDBR BRCTL_ADD_BRIDGE
+#endif
+#ifndef SIOCBRDELBR
+# define SIOCBRDELBR BRCTL_DEL_BRIDGE
+#endif
+#ifndef SIOCBRADDIF
+# define SIOCBRADDIF BRCTL_ADD_IF
+#endif
+#ifndef SIOCBRDELIF
+# define SIOCBRDELIF BRCTL_DEL_IF
+#endif
+
+
 /* Maximum number of ports supported per bridge interface.  */
 #ifndef MAX_PORTS
 #define MAX_PORTS 32
@@ -81,24 +95,24 @@ static void arm_ioctl(unsigned long *args,
 
 
 int brctl_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int brctl_main(int argc ATTRIBUTE_UNUSED, char **argv)
+int brctl_main(int argc UNUSED_PARAM, char **argv)
 {
        static const char keywords[] ALIGN1 =
                "addbr\0" "delbr\0" "addif\0" "delif\0"
-       USE_FEATURE_BRCTL_FANCY(
+       IF_FEATURE_BRCTL_FANCY(
                "stp\0"
                "setageing\0" "setfd\0" "sethello\0" "setmaxage\0"
                "setpathcost\0" "setportprio\0" "setbridgeprio\0"
        )
-       USE_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
+       IF_FEATURE_BRCTL_SHOW("showmacs\0" "show\0");
 
        enum { ARG_addbr = 0, ARG_delbr, ARG_addif, ARG_delif
-               USE_FEATURE_BRCTL_FANCY(,
+               IF_FEATURE_BRCTL_FANCY(,
                   ARG_stp,
                   ARG_setageing, ARG_setfd, ARG_sethello, ARG_setmaxage,
                   ARG_setpathcost, ARG_setportprio, ARG_setbridgeprio
                )
-               USE_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
+               IF_FEATURE_BRCTL_SHOW(, ARG_showmacs, ARG_show)
        };
 
        int fd;
@@ -137,7 +151,7 @@ int brctl_main(int argc ATTRIBUTE_UNUSED, char **argv)
 
                                if (!if_indextoname(bridx[i], brname))
                                        bb_perror_msg_and_die("can't get bridge name for index %d", i);
-                               safe_strncpy(ifr.ifr_name, brname, IFNAMSIZ);
+                               strncpy_IFNAMSIZ(ifr.ifr_name, brname);
 
                                arm_ioctl(args, BRCTL_GET_BRIDGE_INFO,
                                                        (unsigned long) &bi, 0);
@@ -191,7 +205,7 @@ int brctl_main(int argc ATTRIBUTE_UNUSED, char **argv)
                if (!*argv) /* all but 'addif/delif' need at least two arguments */
                        bb_show_usage();
 
-               safe_strncpy(ifr.ifr_name, br, IFNAMSIZ);
+               strncpy_IFNAMSIZ(ifr.ifr_name, br);
                if (key == ARG_addif || key == ARG_delif) { /* addif or delif */
                        brif = *argv;
                        ifr.ifr_ifindex = if_nametoindex(brif);