X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Flibiproute%2Frt_names.c;h=ed21fbe265ff03b9ec24a1d492e9f194707b7e89;hb=28703015ab71784f40bc97f720ed900e26bd03ca;hp=2a7d85cdb2be0b311772338d0119087737700372;hpb=9a2d27249cc2235f7e001a9ea8d4605406bc5f38;p=oweals%2Fbusybox.git diff --git a/networking/libiproute/rt_names.c b/networking/libiproute/rt_names.c index 2a7d85cdb..ed21fbe26 100644 --- a/networking/libiproute/rt_names.c +++ b/networking/libiproute/rt_names.c @@ -1,3 +1,4 @@ +/* vi: set sw=4 ts=4: */ /* * rt_names.c rtnetlink names DB. * @@ -8,17 +9,14 @@ * * Authors: Alexey Kuznetsov, */ - #include #include -#include -#include -#include #include -#include + #include +#include "rt_names.h" -static void rtnl_tab_initialize(char *file, char **tab, int size) +static void rtnl_tab_initialize(char *file, const char **tab, int size) { char buf[512]; FILE *fp; @@ -53,7 +51,7 @@ static void rtnl_tab_initialize(char *file, char **tab, int size) } -static char * rtnl_rtprot_tab[256] = { +static const char * rtnl_rtprot_tab[256] = { "none", "redirect", "kernel", @@ -80,7 +78,7 @@ static void rtnl_rtprot_initialize(void) rtnl_rtprot_tab, 256); } -char * rtnl_rtprot_n2a(int id, char *buf, int len) +const char * rtnl_rtprot_n2a(int id, char *buf, int len) { if (id<0 || id>=256) { snprintf(buf, len, "%d", id); @@ -98,7 +96,7 @@ char * rtnl_rtprot_n2a(int id, char *buf, int len) int rtnl_rtprot_a2n(uint32_t *id, char *arg) { - static char *cache = NULL; + static const char *cache = NULL; static unsigned long res; char *end; int i; @@ -130,7 +128,7 @@ int rtnl_rtprot_a2n(uint32_t *id, char *arg) -static char * rtnl_rtscope_tab[256] = { +static const char * rtnl_rtscope_tab[256] = { "global", }; @@ -147,7 +145,7 @@ static void rtnl_rtscope_initialize(void) rtnl_rtscope_tab, 256); } -char * rtnl_rtscope_n2a(int id, char *buf, int len) +const char * rtnl_rtscope_n2a(int id, char *buf, int len) { if (id<0 || id>=256) { snprintf(buf, len, "%d", id); @@ -165,7 +163,7 @@ char * rtnl_rtscope_n2a(int id, char *buf, int len) int rtnl_rtscope_a2n(uint32_t *id, char *arg) { - static char *cache = NULL; + static const char *cache = NULL; static unsigned long res; char *end; int i; @@ -197,7 +195,7 @@ int rtnl_rtscope_a2n(uint32_t *id, char *arg) -static char * rtnl_rtrealm_tab[256] = { +static const char * rtnl_rtrealm_tab[256] = { "unknown", }; @@ -210,26 +208,9 @@ static void rtnl_rtrealm_initialize(void) rtnl_rtrealm_tab, 256); } -char * rtnl_rtrealm_n2a(int id, char *buf, int len) -{ - if (id<0 || id>=256) { - snprintf(buf, len, "%d", id); - return buf; - } - if (!rtnl_rtrealm_tab[id]) { - if (!rtnl_rtrealm_init) - rtnl_rtrealm_initialize(); - } - if (rtnl_rtrealm_tab[id]) - return rtnl_rtrealm_tab[id]; - snprintf(buf, len, "%d", id); - return buf; -} - - int rtnl_rtrealm_a2n(uint32_t *id, char *arg) { - static char *cache = NULL; + static const char *cache = NULL; static unsigned long res; char *end; int i; @@ -259,42 +240,57 @@ int rtnl_rtrealm_a2n(uint32_t *id, char *arg) return 0; } +#if ENABLE_FEATURE_IP_RULE +const char * rtnl_rtrealm_n2a(int id, char *buf, int len) +{ + if (id<0 || id>=256) { + snprintf(buf, len, "%d", id); + return buf; + } + if (!rtnl_rtrealm_tab[id]) { + if (!rtnl_rtrealm_init) + rtnl_rtrealm_initialize(); + } + if (rtnl_rtrealm_tab[id]) + return rtnl_rtrealm_tab[id]; + snprintf(buf, len, "%d", id); + return buf; +} +#endif - -static char * rtnl_rttable_tab[256] = { - "unspec", +static const char * rtnl_rtdsfield_tab[256] = { + "0", }; -static int rtnl_rttable_init; +static int rtnl_rtdsfield_init; -static void rtnl_rttable_initialize(void) +static void rtnl_rtdsfield_initialize(void) { - rtnl_rttable_init = 1; - rtnl_rttable_tab[255] = "local"; - rtnl_rttable_tab[254] = "main"; - rtnl_tab_initialize("/etc/iproute2/rt_tables", - rtnl_rttable_tab, 256); + rtnl_rtdsfield_init = 1; + rtnl_tab_initialize("/etc/iproute2/rt_dsfield", + rtnl_rtdsfield_tab, 256); } -char * rtnl_rttable_n2a(int id, char *buf, int len) +const char * rtnl_dsfield_n2a(int id, char *buf, int len) { if (id<0 || id>=256) { snprintf(buf, len, "%d", id); return buf; } - if (!rtnl_rttable_tab[id]) { - if (!rtnl_rttable_init) - rtnl_rttable_initialize(); + if (!rtnl_rtdsfield_tab[id]) { + if (!rtnl_rtdsfield_init) + rtnl_rtdsfield_initialize(); } - if (rtnl_rttable_tab[id]) - return rtnl_rttable_tab[id]; - snprintf(buf, len, "%d", id); + if (rtnl_rtdsfield_tab[id]) + return rtnl_rtdsfield_tab[id]; + snprintf(buf, len, "0x%02x", id); return buf; } -int rtnl_rttable_a2n(uint32_t *id, char *arg) + +int rtnl_dsfield_a2n(uint32_t *id, char *arg) { - static char *cache = NULL; + static const char *cache = NULL; static unsigned long res; char *end; int i; @@ -304,58 +300,57 @@ int rtnl_rttable_a2n(uint32_t *id, char *arg) return 0; } - if (!rtnl_rttable_init) - rtnl_rttable_initialize(); + if (!rtnl_rtdsfield_init) + rtnl_rtdsfield_initialize(); for (i=0; i<256; i++) { - if (rtnl_rttable_tab[i] && - strcmp(rtnl_rttable_tab[i], arg) == 0) { - cache = rtnl_rttable_tab[i]; + if (rtnl_rtdsfield_tab[i] && + strcmp(rtnl_rtdsfield_tab[i], arg) == 0) { + cache = rtnl_rtdsfield_tab[i]; res = i; *id = res; return 0; } } - i = strtoul(arg, &end, 0); - if (!end || end == arg || *end || i > 255) + res = strtoul(arg, &end, 16); + if (!end || end == arg || *end || res > 255) return -1; - *id = i; + *id = res; return 0; } - -static char * rtnl_rtdsfield_tab[256] = { - "0", +#if ENABLE_FEATURE_IP_RULE +static int rtnl_rttable_init; +static const char * rtnl_rttable_tab[256] = { + "unspec", }; - -static int rtnl_rtdsfield_init; - -static void rtnl_rtdsfield_initialize(void) +static void rtnl_rttable_initialize(void) { - rtnl_rtdsfield_init = 1; - rtnl_tab_initialize("/etc/iproute2/rt_dsfield", - rtnl_rtdsfield_tab, 256); + rtnl_rttable_init = 1; + rtnl_rttable_tab[255] = "local"; + rtnl_rttable_tab[254] = "main"; + rtnl_rttable_tab[253] = "default"; + rtnl_tab_initialize("/etc/iproute2/rt_tables", rtnl_rttable_tab, 256); } -char * rtnl_dsfield_n2a(int id, char *buf, int len) +const char *rtnl_rttable_n2a(int id, char *buf, int len) { - if (id<0 || id>=256) { + if (id < 0 || id >= 256) { snprintf(buf, len, "%d", id); return buf; } - if (!rtnl_rtdsfield_tab[id]) { - if (!rtnl_rtdsfield_init) - rtnl_rtdsfield_initialize(); + if (!rtnl_rttable_tab[id]) { + if (!rtnl_rttable_init) + rtnl_rttable_initialize(); } - if (rtnl_rtdsfield_tab[id]) - return rtnl_rtdsfield_tab[id]; - snprintf(buf, len, "0x%02x", id); + if (rtnl_rttable_tab[id]) + return rtnl_rttable_tab[id]; + snprintf(buf, len, "%d", id); return buf; } - -int rtnl_dsfield_a2n(uint32_t *id, char *arg) +int rtnl_rttable_a2n(uint32_t * id, char *arg) { static char *cache = NULL; static unsigned long res; @@ -367,23 +362,23 @@ int rtnl_dsfield_a2n(uint32_t *id, char *arg) return 0; } - if (!rtnl_rtdsfield_init) - rtnl_rtdsfield_initialize(); + if (!rtnl_rttable_init) + rtnl_rttable_initialize(); - for (i=0; i<256; i++) { - if (rtnl_rtdsfield_tab[i] && - strcmp(rtnl_rtdsfield_tab[i], arg) == 0) { - cache = rtnl_rtdsfield_tab[i]; + for (i = 0; i < 256; i++) { + if (rtnl_rttable_tab[i] && strcmp(rtnl_rttable_tab[i], arg) == 0) { + cache = (char*)rtnl_rttable_tab[i]; res = i; *id = res; return 0; } } - res = strtoul(arg, &end, 16); - if (!end || end == arg || *end || res > 255) + i = strtoul(arg, &end, 0); + if (!end || end == arg || *end || i > 255) return -1; - *id = res; + *id = i; return 0; } +#endif