LSAcks (for directed acks) are being sent to neighbor's unicast address.

RFC 2328 says:

"The IP destination address for the packet is selected as
 follows.  On physical point-to-point networks, the IP
 destination is always set to the address AllSPFRouters"

Fix is to unconditionally set the destination address for LSAcks over
point-to-point links as AllSPFRouters. Quagga OSPF already has similar
change for OSPF DBD, LSUpdate and LSrequest packets.

Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2015-05-19 18:03:43 -07:00
parent 31eba040c2
commit 86bede75e3

View File

@ -3925,8 +3925,11 @@ ospf_ls_ack_send_list (struct ospf_interface *oi, struct list *ack,
/* Set packet length. */
op->length = length;
/* Set destination IP address. */
op->dst = dst;
/* Decide destination address. */
if (oi->type == OSPF_IFTYPE_POINTOPOINT)
op->dst.s_addr = htonl (OSPF_ALLSPFROUTERS);
else
op->dst.s_addr = dst.s_addr;
/* Add packet to the interface output queue. */
ospf_packet_add (oi, op);