summaryrefslogtreecommitdiff
path: root/ospf6d/ospf6_message.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2021-07-27 10:05:36 +0200
committerAdriano Marto Reis <adrianomarto@gmail.com>2023-10-10 08:08:20 +1000
commit5c0eed0c85e7dba08df24bd7f0ebc17d9a96a030 (patch)
treea56612769a4f015217b237f323ef1ca76a2fe20b /ospf6d/ospf6_message.c
parent0c58d8368878f70dd23a566aaf96d3fcccbc5782 (diff)
ospf6d: add point-to-multipoint interface mode
This adds the PtMP interface type, which is effectively identical to PtP except that all the database flooding & updates are unicast. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_message.c')
-rw-r--r--ospf6d/ospf6_message.c8
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;