diff options
Diffstat (limited to 'ospfd/ospf_flood.c')
| -rw-r--r-- | ospfd/ospf_flood.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c index e686a93ba9..c2af09a679 100644 --- a/ospfd/ospf_flood.c +++ b/ospfd/ospf_flood.c @@ -648,6 +648,13 @@ int ospf_flood_through_interface(struct ospf_interface *oi, OSPF_SEND_PACKET_DIRECT); } } else + /* Optimization: for P2MP interfaces, + don't send back out the incoming interface immediately, + allow time to rx multicast ack to the rx'ed (multicast) + update */ + if (retx_flag != 1 || + oi->type != OSPF_IFTYPE_POINTOMULTIPOINT || inbr == NULL || + oi != inbr->oi) ospf_ls_upd_send_lsa(oi->nbr_self, lsa, OSPF_SEND_PACKET_INDIRECT); |
