summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2023-01-24 09:45:50 +0100
committerMaria Matejka <mq@ucw.cz>2023-01-24 11:04:28 +0100
commit3ac628e0f0b7ffaa49c95688cc95954ece8f61fc (patch)
treeb0678bd2a685dab6eef729232d7ef50a0344abd1 /proto
parent02b2a4ecaaf850ce04b0cd2e74c1ff6fede3f181 (diff)
parent5437104afad90f2a74ce52946f06da607d021e2b (diff)
Merge v2.0.12 into thread-next
Diffstat (limited to 'proto')
-rw-r--r--proto/babel/babel.c3
-rw-r--r--proto/bfd/packets.c4
-rw-r--r--proto/ospf/iface.c6
-rw-r--r--proto/radv/radv.c3
-rw-r--r--proto/rip/rip.c3
5 files changed, 19 insertions, 0 deletions
diff --git a/proto/babel/babel.c b/proto/babel/babel.c
index a00be9a5..a3a52f73 100644
--- a/proto/babel/babel.c
+++ b/proto/babel/babel.c
@@ -1945,6 +1945,9 @@ babel_reconfigure_ifaces(struct babel_proto *p, struct babel_config *cf)
WALK_LIST(iface, iface_list)
{
+ if (p->p.vrf && p->p.vrf != iface->master)
+ continue;
+
if (!(iface->flags & IF_UP))
continue;
diff --git a/proto/bfd/packets.c b/proto/bfd/packets.c
index 6f0b4eaf..2200ab09 100644
--- a/proto/bfd/packets.c
+++ b/proto/bfd/packets.c
@@ -374,6 +374,10 @@ bfd_rx_hook(sock *sk, uint len)
/* FIXME: better session matching and message */
if (!s)
return 1;
+
+ /* For active sessions we require matching remote id */
+ if ((s->loc_state == BFD_STATE_UP) && (ntohl(pkt->snd_id) != s->rem_id))
+ DROP("mismatched remote id", ntohl(pkt->snd_id));
}
/* bfd_check_authentication() has its own error logging */
diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c
index 4cd45033..84c53aa1 100644
--- a/proto/ospf/iface.c
+++ b/proto/ospf/iface.c
@@ -1227,6 +1227,9 @@ ospf_reconfigure_ifaces2(struct ospf_proto *p)
WALK_LIST(iface, iface_list)
{
+ if (p->p.vrf && p->p.vrf != iface->master)
+ continue;
+
if (! (iface->flags & IF_UP))
continue;
@@ -1273,6 +1276,9 @@ ospf_reconfigure_ifaces3(struct ospf_proto *p)
WALK_LIST(iface, iface_list)
{
+ if (p->p.vrf && p->p.vrf != iface->master)
+ continue;
+
if (! (iface->flags & IF_UP))
continue;
diff --git a/proto/radv/radv.c b/proto/radv/radv.c
index 10d5e3ed..8929e8ef 100644
--- a/proto/radv/radv.c
+++ b/proto/radv/radv.c
@@ -666,6 +666,9 @@ radv_reconfigure(struct proto *P, struct proto_config *CF)
struct iface *iface;
WALK_LIST(iface, iface_list)
{
+ if (p->p.vrf && p->p.vrf != iface->master)
+ continue;
+
if (!(iface->flags & IF_UP))
continue;
diff --git a/proto/rip/rip.c b/proto/rip/rip.c
index 5981ffa7..bd087246 100644
--- a/proto/rip/rip.c
+++ b/proto/rip/rip.c
@@ -808,6 +808,9 @@ rip_reconfigure_ifaces(struct rip_proto *p, struct rip_config *cf)
WALK_LIST(iface, iface_list)
{
+ if (p->p.vrf && p->p.vrf != iface->master)
+ continue;
+
if (!(iface->flags & IF_UP))
continue;