diff options
Diffstat (limited to 'ospf6d/ospf6_message.c')
| -rw-r--r-- | ospf6d/ospf6_message.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c index 244cbe2418..289a1a968c 100644 --- a/ospf6d/ospf6_message.c +++ b/ospf6d/ospf6_message.c @@ -419,7 +419,8 @@ static void ospf6_hello_recv(struct in6_addr *src, struct in6_addr *dst, hello = (struct ospf6_hello *)((caddr_t)oh + sizeof(struct ospf6_header)); - if (oi->state == OSPF6_INTERFACE_POINTTOPOINT + if ((oi->state == OSPF6_INTERFACE_POINTTOPOINT + || oi->state == OSPF6_INTERFACE_POINTTOMULTIPOINT) && oi->p2xp_only_cfg_neigh) { /* NEVER, never, ever, do this on broadcast (or NBMA)! * DR/BDR election requires everyone to talk to everyone else @@ -2326,8 +2327,9 @@ void ospf6_hello_send_addr(struct ospf6_interface *oi, /* Set packet length. */ op->length = length; - if (!addr && oi->state == OSPF6_INTERFACE_POINTTOPOINT - && oi->p2xp_no_multicast_hello) { + if ((oi->state == OSPF6_INTERFACE_POINTTOPOINT + || oi->state == OSPF6_INTERFACE_POINTTOMULTIPOINT) + && !addr && oi->p2xp_no_multicast_hello) { struct listnode *node; struct ospf6_neighbor *on; struct ospf6_packet *opdup; |
