osfd: Make OSPF compliant to the last sentence of this section in RFC 2328
9.5 Sending Hello packets
Hello packets are sent out each functioning router interface.
They are used to discover and maintain neighbor
relationships.[6] On broadcast and NBMA networks, Hello Packets
are also used to elect the Designated Router and Backup
Designated Router.
The format of an Hello packet is detailed in Section A.3.2. The
Hello Packet contains the router's Router Priority (used in
choosing the Designated Router), and the interval between Hello
Packets sent out the interface (HelloInterval). The Hello
Packet also indicates how often a neighbor must be heard from to
remain active (RouterDeadInterval). Both HelloInterval and
RouterDeadInterval must be the same for all routers attached to
a common network. The Hello packet also contains the IP address
mask of the attached network (Network Mask). On unnumbered
point-to-point networks and on virtual links this field should
be set to 0.0.0.0.
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com>
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index f141822..facba89 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -3022,7 +3022,8 @@
int flag = 0;
/* Set netmask of interface. */
- if (oi->type != OSPF_IFTYPE_POINTOPOINT &&
+ if (!(CHECK_FLAG(oi->connected->flags, ZEBRA_IFA_UNNUMBERED) &&
+ oi->type == OSPF_IFTYPE_POINTOPOINT) &&
oi->type != OSPF_IFTYPE_VIRTUALLINK)
masklen2ip (oi->address->prefixlen, &mask);
else