diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2021-07-27 16:10:23 +0200 | 
|---|---|---|
| committer | Adriano Marto Reis <adrianomarto@gmail.com> | 2023-10-10 07:58:21 +1000 | 
| commit | f5917bae53cee2367d97ae5712a0e18065981252 (patch) | |
| tree | ff68b15b0312560f56c7b48a374d5263585bc585 /ospf6d/ospf6_message.c | |
| parent | 65e955890c56e0652c702f9f1d7871adbd7f5ebf (diff) | |
ospf6d: option to restrict PtP neighbor list
This adds a knob to refuse forming adjacencies with neighbors not listed
in the config.  Only works on PtP/PtMP of course, otherwise the DR/BDR
machinery gets broken.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_message.c')
| -rw-r--r-- | ospf6d/ospf6_message.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/ospf6d/ospf6_message.c b/ospf6d/ospf6_message.c index b50b408ead..7a855d1af5 100644 --- a/ospf6d/ospf6_message.c +++ b/ospf6d/ospf6_message.c @@ -407,6 +407,24 @@ 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 +	    && oi->p2xp_only_cfg_neigh) { +		/* NEVER, never, ever, do this on broadcast (or NBMA)! +		 * DR/BDR election requires everyone to talk to everyone else +		 * only for PtP/PtMP we can be selective in adjacencies! +		 */ +		struct ospf6_if_p2xp_neighcfg *p2xp_cfg; + +		p2xp_cfg = ospf6_if_p2xp_find(oi, src); +		if (!p2xp_cfg) { +			if (IS_OSPF6_DEBUG_MESSAGE(oh->type, RECV_HDR)) +				zlog_debug( +					"ignoring PtP/PtMP hello from %pI6, neighbor not configured", +					src); +			return; +		} +	} +  	/* HelloInterval check */  	if (ntohs(hello->hello_interval) != oi->hello_interval) {  		zlog_warn(  | 
