Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/networking/ip.c


Ignore:
Timestamp:
Feb 25, 2011, 9:26:54 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.9/mindi-busybox/networking/ip.c

    r1765 r2725  
    11/* vi: set sw=4 ts=4: */
    22/*
    3  * ip.c     "ip" utility frontend.
     3 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
    44 *
    5  * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
    6  *
    7  * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
    8  *
     5 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
    96 *
    107 * Changes:
    11  *
    12  * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
    13  * Bernhard Fischer rewrote to use index_in_substr_array
     8 * Rani Assaf <rani@magic.metawire.com> 980929: resolve addresses
     9 * Bernhard Reutner-Fischer rewrote to use index_in_substr_array
    1410 */
    1511
     
    2521 || ENABLE_FEATURE_IP_RULE
    2622
    27 static int ATTRIBUTE_NORETURN ip_print_help(int ATTRIBUTE_UNUSED ac, char ATTRIBUTE_UNUSED **av)
     23static int FAST_FUNC ip_print_help(char **argv UNUSED_PARAM)
    2824{
    2925    bb_show_usage();
    3026}
    3127
    32 static int (*ip_func)(int argc, char **argv) = ip_print_help;
     28typedef int FAST_FUNC (*ip_func_ptr_t)(char**);
    3329
    34 static int ip_do(int argc, char **argv)
     30static int ip_do(ip_func_ptr_t ip_func, char **argv)
    3531{
    36     ip_parse_common_args(&argc, &argv);
    37     return ip_func(argc-1, argv+1);
     32    argv = ip_parse_common_args(argv + 1);
     33    return ip_func(argv);
    3834}
    3935
    4036#if ENABLE_FEATURE_IP_ADDRESS
    41 int ipaddr_main(int argc, char **argv);
    42 int ipaddr_main(int argc, char **argv)
     37int ipaddr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     38int ipaddr_main(int argc UNUSED_PARAM, char **argv)
    4339{
    44     ip_func = do_ipaddr;
    45     return ip_do(argc, argv);
     40    return ip_do(do_ipaddr, argv);
    4641}
    4742#endif
    4843#if ENABLE_FEATURE_IP_LINK
    49 int iplink_main(int argc, char **argv);
    50 int iplink_main(int argc, char **argv)
     44int iplink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     45int iplink_main(int argc UNUSED_PARAM, char **argv)
    5146{
    52     ip_func = do_iplink;
    53     return ip_do(argc, argv);
     47    return ip_do(do_iplink, argv);
    5448}
    5549#endif
    5650#if ENABLE_FEATURE_IP_ROUTE
    57 int iproute_main(int argc, char **argv);
    58 int iproute_main(int argc, char **argv)
     51int iproute_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     52int iproute_main(int argc UNUSED_PARAM, char **argv)
    5953{
    60     ip_func = do_iproute;
    61     return ip_do(argc, argv);
     54    return ip_do(do_iproute, argv);
    6255}
    6356#endif
    6457#if ENABLE_FEATURE_IP_RULE
    65 int iprule_main(int argc, char **argv);
    66 int iprule_main(int argc, char **argv)
     58int iprule_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     59int iprule_main(int argc UNUSED_PARAM, char **argv)
    6760{
    68     ip_func = do_iprule;
    69     return ip_do(argc, argv);
     61    return ip_do(do_iprule, argv);
    7062}
    7163#endif
    7264#if ENABLE_FEATURE_IP_TUNNEL
    73 int iptunnel_main(int argc, char **argv);
    74 int iptunnel_main(int argc, char **argv)
     65int iptunnel_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     66int iptunnel_main(int argc UNUSED_PARAM, char **argv)
    7567{
    76     ip_func = do_iptunnel;
    77     return ip_do(argc, argv);
     68    return ip_do(do_iptunnel, argv);
    7869}
    7970#endif
    8071
    8172
    82 int ip_main(int argc, char **argv);
    83 int ip_main(int argc, char **argv)
     73int ip_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
     74int ip_main(int argc UNUSED_PARAM, char **argv)
    8475{
    8576    static const char keywords[] ALIGN1 =
    86         USE_FEATURE_IP_ADDRESS("address\0")
    87         USE_FEATURE_IP_ROUTE("route\0")
    88         USE_FEATURE_IP_LINK("link\0")
    89         USE_FEATURE_IP_TUNNEL("tunnel\0" "tunl\0")
    90         USE_FEATURE_IP_RULE("rule\0")
     77        IF_FEATURE_IP_ADDRESS("address\0")
     78        IF_FEATURE_IP_ROUTE("route\0")
     79        IF_FEATURE_IP_ROUTE("r\0")
     80        IF_FEATURE_IP_LINK("link\0")
     81        IF_FEATURE_IP_TUNNEL("tunnel\0")
     82        IF_FEATURE_IP_TUNNEL("tunl\0")
     83        IF_FEATURE_IP_RULE("rule\0")
    9184        ;
    92     enum {
    93         USE_FEATURE_IP_ADDRESS(IP_addr,)
    94         USE_FEATURE_IP_ROUTE(IP_route,)
    95         USE_FEATURE_IP_LINK(IP_link,)
    96         USE_FEATURE_IP_TUNNEL(IP_tunnel, IP_tunl,)
    97         USE_FEATURE_IP_RULE(IP_rule,)
    98         IP_none
     85    static const ip_func_ptr_t ip_func_ptrs[] = {
     86        ip_print_help,
     87        IF_FEATURE_IP_ADDRESS(do_ipaddr,)
     88        IF_FEATURE_IP_ROUTE(do_iproute,)
     89        IF_FEATURE_IP_ROUTE(do_iproute,)
     90        IF_FEATURE_IP_LINK(do_iplink,)
     91        IF_FEATURE_IP_TUNNEL(do_iptunnel,)
     92        IF_FEATURE_IP_TUNNEL(do_iptunnel,)
     93        IF_FEATURE_IP_RULE(do_iprule,)
    9994    };
     95    ip_func_ptr_t ip_func;
     96    int key;
    10097
    101     ip_parse_common_args(&argc, &argv);
    102     if (argc > 1) {
    103         int key = index_in_substrings(keywords, argv[1]);
    104         argc -= 2;
    105         argv += 2;
    106 #if ENABLE_FEATURE_IP_ADDRESS
    107         if (key == IP_addr)
    108             ip_func = do_ipaddr;
    109 #endif
    110 #if ENABLE_FEATURE_IP_ROUTE
    111         if (key == IP_route)
    112             ip_func = do_iproute;
    113 #endif
    114 #if ENABLE_FEATURE_IP_LINK
    115         if (key == IP_link)
    116             ip_func = do_iplink;
    117 #endif
    118 #if ENABLE_FEATURE_IP_TUNNEL
    119         if (key == IP_tunnel || key == IP_tunl)
    120             ip_func = do_iptunnel;
    121 #endif
    122 #if ENABLE_FEATURE_IP_RULE
    123         if (key == IP_rule)
    124             ip_func = do_iprule;
    125 #endif
    126     }
    127     return ip_func(argc, argv);
     98    argv = ip_parse_common_args(argv + 1);
     99    key = *argv ? index_in_substrings(keywords, *argv++) : -1;
     100    ip_func = ip_func_ptrs[key + 1];
     101
     102    return ip_func(argv);
    128103}
    129104
Note: See TracChangeset for help on using the changeset viewer.