+/* vi: set sw=4 ts=4: */
/*
* rt_names.c rtnetlink names DB.
*
*
* 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;
}
-static char * rtnl_rtprot_tab[256] = {
+static const char * rtnl_rtprot_tab[256] = {
"none",
"redirect",
"kernel",
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);
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;
-static char * rtnl_rtscope_tab[256] = {
+static const char * rtnl_rtscope_tab[256] = {
"global",
};
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);
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;
-static char * rtnl_rtrealm_tab[256] = {
+static const char * rtnl_rtrealm_tab[256] = {
"unknown",
};
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;
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;
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;
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