Add support for rt_protos.d
Add support for reading proto id/name mappings from rt_protos.d directory. Allows users to have custom protocol values converted to human friendly names. Each file under rt_protos.d has the 'id name' format used by rt_protos. Only .conf files are read and parsed. Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
This commit is contained in:
parent
9b036afd3c
commit
719e331ff6
|
|
@ -0,0 +1,2 @@
|
||||||
|
Each file in this directory is an rt_protos configuration file. iproute2
|
||||||
|
commands scan this directory processing all files that end in '.conf'.
|
||||||
|
|
@ -1,3 +1,2 @@
|
||||||
Each file in this directory is an rt_tables configuration file. iproute2
|
Each file in this directory is an rt_tables configuration file. iproute2
|
||||||
commands scan this directory processing all files that end in '.conf'.
|
commands scan this directory processing all files that end in '.conf'.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -142,9 +142,36 @@ static int rtnl_rtprot_init;
|
||||||
|
|
||||||
static void rtnl_rtprot_initialize(void)
|
static void rtnl_rtprot_initialize(void)
|
||||||
{
|
{
|
||||||
|
struct dirent *de;
|
||||||
|
DIR *d;
|
||||||
|
|
||||||
rtnl_rtprot_init = 1;
|
rtnl_rtprot_init = 1;
|
||||||
rtnl_tab_initialize(CONFDIR "/rt_protos",
|
rtnl_tab_initialize(CONFDIR "/rt_protos",
|
||||||
rtnl_rtprot_tab, 256);
|
rtnl_rtprot_tab, 256);
|
||||||
|
|
||||||
|
d = opendir(CONFDIR "/rt_protos.d");
|
||||||
|
if (!d)
|
||||||
|
return;
|
||||||
|
|
||||||
|
while ((de = readdir(d)) != NULL) {
|
||||||
|
char path[PATH_MAX];
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
if (*de->d_name == '.')
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* only consider filenames ending in '.conf' */
|
||||||
|
len = strlen(de->d_name);
|
||||||
|
if (len <= 5)
|
||||||
|
continue;
|
||||||
|
if (strcmp(de->d_name + len - 5, ".conf"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), CONFDIR "/rt_protos.d/%s",
|
||||||
|
de->d_name);
|
||||||
|
rtnl_tab_initialize(path, rtnl_rtprot_tab, 256);
|
||||||
|
}
|
||||||
|
closedir(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *rtnl_rtprot_n2a(int id, char *buf, int len)
|
const char *rtnl_rtprot_n2a(int id, char *buf, int len)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue