diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-04-07 16:14:20 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2021-04-07 16:14:20 +0200 |
commit | a2277975d787fb388e753432673acefd69454b1a (patch) | |
tree | 588193a0f0692df7995438189d29ef5dac08433a /sysdep/unix/main.c | |
parent | 5caf32efa209bc3e9d741fe2acfc992d2cfad3e7 (diff) |
Unix: Expand accepted ranges of iproute2 constants
We support 32bit table and realm/flow ids, we should also accept them as
constants.
Thanks to Patrick Hemmer for the bugreport.
Diffstat (limited to 'sysdep/unix/main.c')
-rw-r--r-- | sysdep/unix/main.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c index 67e76655..76f92c5e 100644 --- a/sysdep/unix/main.c +++ b/sysdep/unix/main.c @@ -125,11 +125,11 @@ add_num_const(char *name, int val, const char *file, const uint line) /* the code of read_iproute_table() is based on rtnl_tab_initialize() from iproute2 package */ static void -read_iproute_table(char *file, char *prefix, int max) +read_iproute_table(char *file, char *prefix, uint max) { char buf[512], namebuf[512]; char *name; - int val; + uint val; FILE *fp; strcpy(namebuf, prefix); @@ -151,11 +151,11 @@ read_iproute_table(char *file, char *prefix, int max) if (sscanf(p, "0x%x %s\n", &val, name) != 2 && sscanf(p, "0x%x %s #", &val, name) != 2 && - sscanf(p, "%d %s\n", &val, name) != 2 && - sscanf(p, "%d %s #", &val, name) != 2) + sscanf(p, "%u %s\n", &val, name) != 2 && + sscanf(p, "%u %s #", &val, name) != 2) continue; - if (val < 0 || val > max) + if (val > max) continue; for(p = name; *p; p++) @@ -191,10 +191,10 @@ sysdep_preconfig(struct config *c) c->watchdog_warning = UNIX_DEFAULT_WATCHDOG_WARNING; #ifdef PATH_IPROUTE_DIR - read_iproute_table(PATH_IPROUTE_DIR "/rt_protos", "ipp_", 256); - read_iproute_table(PATH_IPROUTE_DIR "/rt_realms", "ipr_", 256); - read_iproute_table(PATH_IPROUTE_DIR "/rt_scopes", "ips_", 256); - read_iproute_table(PATH_IPROUTE_DIR "/rt_tables", "ipt_", 256); + read_iproute_table(PATH_IPROUTE_DIR "/rt_protos", "ipp_", 255); + read_iproute_table(PATH_IPROUTE_DIR "/rt_realms", "ipr_", 0xffffffff); + read_iproute_table(PATH_IPROUTE_DIR "/rt_scopes", "ips_", 255); + read_iproute_table(PATH_IPROUTE_DIR "/rt_tables", "ipt_", 0xffffffff); #endif } |