summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/flowspec_test.c4
-rw-r--r--lib/net.h4
-rw-r--r--sysdep/bsd/krt-sock.Y4
-rw-r--r--sysdep/bsd/krt-sock.c10
-rw-r--r--sysdep/bsd/krt-sys.h2
5 files changed, 14 insertions, 10 deletions
diff --git a/lib/flowspec_test.c b/lib/flowspec_test.c
index 69bc279d..dd71dc7b 100644
--- a/lib/flowspec_test.c
+++ b/lib/flowspec_test.c
@@ -70,8 +70,8 @@ t_first_part(void)
net_addr_flow4 *f;
NET_ADDR_FLOW4_(f, ip4_build(10,0,0,1), 24, ((byte[]) { 0x00, 0x00, 0xab }));
- const byte const *under240 = &f->data[1];
- const byte const *above240 = &f->data[2];
+ const byte *under240 = &f->data[1];
+ const byte *above240 = &f->data[2];
/* Case 0x00 0x00 */
bt_assert(flow4_first_part(f) == NULL);
diff --git a/lib/net.h b/lib/net.h
index 4b2077ae..69f00641 100644
--- a/lib/net.h
+++ b/lib/net.h
@@ -358,10 +358,10 @@ static inline int net_zero_roa6(const net_addr_roa6 *a)
{ return !a->pxlen && ip6_zero(a->prefix) && !a->max_pxlen && !a->asn; }
static inline int net_zero_flow4(const net_addr_flow4 *a)
-{ return !a->pxlen && ip4_zero(a->prefix) && !a->data; }
+{ return !a->pxlen && ip4_zero(a->prefix) && (a->length == sizeof(net_addr_flow4)); }
static inline int net_zero_flow6(const net_addr_flow6 *a)
-{ return !a->pxlen && ip6_zero(a->prefix) && !a->data; }
+{ return !a->pxlen && ip6_zero(a->prefix) && (a->length == sizeof(net_addr_flow6)); }
static inline int net_zero_mpls(const net_addr_mpls *a)
{ return !a->label; }
diff --git a/sysdep/bsd/krt-sock.Y b/sysdep/bsd/krt-sock.Y
index 0218f188..81422c79 100644
--- a/sysdep/bsd/krt-sock.Y
+++ b/sysdep/bsd/krt-sock.Y
@@ -20,8 +20,8 @@ kern_sys_item:
KERNEL TABLE expr {
if ($3 && (krt_max_tables == 1))
cf_error("Multiple kernel routing tables not supported");
- if ($3 < 0 || $3 >= krt_max_tables)
- cf_error("Kernel table id must be in range 0-%d", krt_max_tables - 1);
+ if ($3 >= krt_max_tables)
+ cf_error("Kernel table id must be in range 0-%u", krt_max_tables - 1);
THIS_KRT->sys.table_id = $3;
}
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index 604cd510..0a52cfbd 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -74,11 +74,11 @@ const int rt_default_ecmp = 0;
/* Dynamic max number of tables */
-int krt_max_tables;
+uint krt_max_tables;
#ifdef KRT_USE_SYSCTL_NET_FIBS
-static int
+static uint
krt_get_max_tables(void)
{
int fibs;
@@ -90,7 +90,11 @@ krt_get_max_tables(void)
return 1;
}
- return MIN(fibs, KRT_MAX_TABLES);
+ /* Should not happen */
+ if (fibs < 1)
+ return 1;
+
+ return (uint) MIN(fibs, KRT_MAX_TABLES);
}
#else
diff --git a/sysdep/bsd/krt-sys.h b/sysdep/bsd/krt-sys.h
index ed667e80..aa6cc72e 100644
--- a/sysdep/bsd/krt-sys.h
+++ b/sysdep/bsd/krt-sys.h
@@ -31,7 +31,7 @@ static inline void kif_sys_copy_config(struct kif_config *d UNUSED, struct kif_c
/* Kernel routes */
-extern int krt_max_tables;
+extern uint krt_max_tables;
struct krt_params {
int table_id; /* Kernel table ID we sync with */