mirror of
https://git.kernel.org/pub/scm/network/iproute2/iproute2.git
synced 2024-11-15 05:55:11 +08:00
Add support for rt_tables.d
Add support for reading table id/name mappings from rt_tables.d directory. Suggested-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
This commit is contained in:
parent
906ac5437a
commit
13ada95da4
3
etc/iproute2/rt_tables.d/README
Normal file
3
etc/iproute2/rt_tables.d/README
Normal file
@ -0,0 +1,3 @@
|
||||
Each file in this directory is an rt_tables configuration file. iproute2
|
||||
commands scan this directory processing all files that end in '.conf'.
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include <asm/types.h>
|
||||
#include <linux/rtnetlink.h>
|
||||
@ -339,6 +340,8 @@ static int rtnl_rttable_init;
|
||||
|
||||
static void rtnl_rttable_initialize(void)
|
||||
{
|
||||
struct dirent *de;
|
||||
DIR *d;
|
||||
int i;
|
||||
|
||||
rtnl_rttable_init = 1;
|
||||
@ -348,6 +351,29 @@ static void rtnl_rttable_initialize(void)
|
||||
}
|
||||
rtnl_hash_initialize(CONFDIR "/rt_tables",
|
||||
rtnl_rttable_hash, 256);
|
||||
|
||||
d = opendir(CONFDIR "/rt_tables.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_tables.d/%s", de->d_name);
|
||||
rtnl_hash_initialize(path, rtnl_rttable_hash, 256);
|
||||
}
|
||||
closedir(d);
|
||||
}
|
||||
|
||||
const char * rtnl_rttable_n2a(__u32 id, char *buf, int len)
|
||||
|
Loading…
Reference in New Issue
Block a user