diff options
author | Maria Matejka <mq@ucw.cz> | 2023-01-24 09:45:50 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-01-24 11:04:28 +0100 |
commit | 3ac628e0f0b7ffaa49c95688cc95954ece8f61fc (patch) | |
tree | b0678bd2a685dab6eef729232d7ef50a0344abd1 /proto | |
parent | 02b2a4ecaaf850ce04b0cd2e74c1ff6fede3f181 (diff) | |
parent | 5437104afad90f2a74ce52946f06da607d021e2b (diff) |
Merge v2.0.12 into thread-next
Diffstat (limited to 'proto')
-rw-r--r-- | proto/babel/babel.c | 3 | ||||
-rw-r--r-- | proto/bfd/packets.c | 4 | ||||
-rw-r--r-- | proto/ospf/iface.c | 6 | ||||
-rw-r--r-- | proto/radv/radv.c | 3 | ||||
-rw-r--r-- | proto/rip/rip.c | 3 |
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; |