u_short, ulong exterminated
[oweals/busybox.git] / networking / libiproute / rt_names.c
index 2a7d85cdb2be0b311772338d0119087737700372..ed21fbe265ff03b9ec24a1d492e9f194707b7e89 100644 (file)
@@ -1,3 +1,4 @@
+/* vi: set sw=4 ts=4: */
 /*
  * rt_names.c          rtnetlink names DB.
  *
@@ -8,17 +9,14 @@
  *
  * Authors:    Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>
  */
-
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <syslog.h>
-#include <fcntl.h>
 #include <string.h>
-#include <sys/time.h>
+
 #include <stdint.h>
+#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