summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_packet.c
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2022-10-21 22:35:13 +0200
committerLou Berger <lberger@labn.net>2022-10-25 17:31:44 +0200
commitc706f0e32ba8aa8780a0618b6fbba364c383ae05 (patch)
tree57ce966e0d581ca7d85c521e3e7c85b9f2e13864 /ospfd/ospf_packet.c
parenttopotests: test_ospf_p2mp.py - check for full adjacencies and basic DB info (diff)
downloadfrr-c706f0e32ba8aa8780a0618b6fbba364c383ae05.tar.xz
frr-c706f0e32ba8aa8780a0618b6fbba364c383ae05.zip
ospf: optimization for FRR's P2MP mode
FRR implements a non-standard, but compatible approach for sending update LSAs (it always send to 224.0.0.5) on P2MP interfaces. This change makes it so acks are also sent to 224.0.0.5. Since the acks are multicast, this allows an optimization where we don't send back out the incoming P2MP interface immediately allow time to rx multicast ack from neighbors on the same net that rx'ed the original (multicast) update. Signed-off-by: Lou Berger <lberger@labn.net>
Diffstat (limited to 'ospfd/ospf_packet.c')
-rw-r--r--ospfd/ospf_packet.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index 57643f637..466b5fa2a 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -4220,7 +4220,8 @@ static void ospf_ls_ack_send_list(struct ospf_interface *oi, struct list *ack,
op->length = length;
/* Decide destination address. */
- if (oi->type == OSPF_IFTYPE_POINTOPOINT)
+ if (oi->type == OSPF_IFTYPE_POINTOPOINT ||
+ oi->type == OSPF_IFTYPE_POINTOMULTIPOINT)
op->dst.s_addr = htonl(OSPF_ALLSPFROUTERS);
else
op->dst.s_addr = dst.s_addr;