+static const struct arg1opt Arg1Opt[] = {
+ { "SIFMETRIC", SIOCSIFMETRIC, ifreq_offsetof(ifr_metric) },
+ { "SIFMTU", SIOCSIFMTU, ifreq_offsetof(ifr_mtu) },
+ { "SIFTXQLEN", SIOCSIFTXQLEN, ifreq_offsetof(ifr_qlen) },
+ { "SIFDSTADDR", SIOCSIFDSTADDR, ifreq_offsetof(ifr_dstaddr) },
+ { "SIFNETMASK", SIOCSIFNETMASK, ifreq_offsetof(ifr_netmask) },
+ { "SIFBRDADDR", SIOCSIFBRDADDR, ifreq_offsetof(ifr_broadaddr) },
+#if ENABLE_FEATURE_IFCONFIG_HW
+ { "SIFHWADDR", SIOCSIFHWADDR, ifreq_offsetof(ifr_hwaddr) },
+#endif
+ { "SIFDSTADDR", SIOCSIFDSTADDR, ifreq_offsetof(ifr_dstaddr) },
+#ifdef SIOCSKEEPALIVE
+ { "SKEEPALIVE", SIOCSKEEPALIVE, ifreq_offsetof(ifr_data) },
+#endif
+#ifdef SIOCSOUTFILL
+ { "SOUTFILL", SIOCSOUTFILL, ifreq_offsetof(ifr_data) },
+#endif
+#if ENABLE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
+ { "SIFMAP", SIOCSIFMAP, ifreq_offsetof(ifr_map.mem_start) },
+ { "SIFMAP", SIOCSIFMAP, ifreq_offsetof(ifr_map.base_addr) },
+ { "SIFMAP", SIOCSIFMAP, ifreq_offsetof(ifr_map.irq) },
+#endif
+#if ENABLE_FEATURE_IPV6
+ { "SIFADDR", SIOCSIFADDR, ifreq_offsetof(ifr_addr) }, /* IPv6 version ignores the offset */
+ { "DIFADDR", SIOCDIFADDR, ifreq_offsetof(ifr_addr) }, /* IPv6 version ignores the offset */
+#endif
+ /* Last entry is for unmatched (assumed to be hostname/address) arg. */
+ { "SIFADDR", SIOCSIFADDR, ifreq_offsetof(ifr_addr) },
+};
+
+static const struct options OptArray[] = {
+ { "metric", N_ARG, ARG_METRIC, 0 },
+ { "mtu", N_ARG, ARG_MTU, 0 },
+ { "txqueuelen", N_ARG, ARG_TXQUEUELEN, 0 },
+ { "dstaddr", N_ARG, ARG_DSTADDR, 0 },
+ { "netmask", N_ARG, ARG_NETMASK, 0 },
+ { "broadcast", N_ARG | M_CLR, ARG_BROADCAST, IFF_BROADCAST },
+#if ENABLE_FEATURE_IFCONFIG_HW
+ { "hw", N_ARG, ARG_HW, 0 },
+#endif
+ { "pointopoint", N_ARG | M_CLR, ARG_POINTOPOINT, IFF_POINTOPOINT },
+#ifdef SIOCSKEEPALIVE
+ { "keepalive", N_ARG, ARG_KEEPALIVE, 0 },
+#endif
+#ifdef SIOCSOUTFILL
+ { "outfill", N_ARG, ARG_OUTFILL, 0 },
+#endif
+#if ENABLE_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
+ { "mem_start", N_ARG, ARG_MEM_START, 0 },
+ { "io_addr", N_ARG, ARG_IO_ADDR, 0 },
+ { "irq", N_ARG, ARG_IRQ, 0 },
+#endif
+#if ENABLE_FEATURE_IPV6
+ { "add", N_ARG, ARG_ADD_DEL, 0 },
+ { "del", N_ARG, ARG_ADD_DEL, 0 },
+#endif
+ { "arp", N_CLR | M_SET, 0, IFF_NOARP },
+ { "trailers", N_CLR | M_SET, 0, IFF_NOTRAILERS },
+ { "promisc", N_SET | M_CLR, 0, IFF_PROMISC },
+ { "multicast", N_SET | M_CLR, 0, IFF_MULTICAST },
+ { "allmulti", N_SET | M_CLR, 0, IFF_ALLMULTI },
+ { "dynamic", N_SET | M_CLR, 0, IFF_DYNAMIC },
+ { "up", N_SET, 0, (IFF_UP | IFF_RUNNING) },
+ { "down", N_CLR, 0, IFF_UP },
+ { NULL, 0, ARG_HOSTNAME, (IFF_UP | IFF_RUNNING) }
+};
+
+int ifconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int ifconfig_main(int argc UNUSED_PARAM, char **argv)