summaryrefslogtreecommitdiff
path: root/sysdep
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2021-04-07 16:14:20 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-04-07 16:14:20 +0200
commita2277975d787fb388e753432673acefd69454b1a (patch)
tree588193a0f0692df7995438189d29ef5dac08433a /sysdep
parent5caf32efa209bc3e9d741fe2acfc992d2cfad3e7 (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')
-rw-r--r--sysdep/unix/main.c18
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
}