diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-07-10 18:25:36 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-07-10 18:25:36 +0200 |
commit | 1aec7112f7314c3e9a4d8b9440dd85a782295310 (patch) | |
tree | 0a48e1eeb5a43c8905fbb1b779e2f487fc2b5aad /proto/ospf/ospf.h | |
parent | 422a9334294dd9a5b13abd8563a3dc7233e64b13 (diff) |
OSPF: Fix handling of NSSA option flags
Per RFC 3101, N-bit signalling NSSA support should be used only in Hello
packets, not in DBDES packets. BIRD since 2.0.4 verifies N-bit in
neighbor structure, which is learned from DBDES packets, therefore
NSSA-LSAs are not propagated to proper implementations of RFC 3101.
This patch fixes that. Both removing the check and removing N-bit from
DBDES packet. This will fix compatibility issues with proper
implementations, but causes compatibility issues with BIRD 2.0.4.
Diffstat (limited to 'proto/ospf/ospf.h')
-rw-r--r-- | proto/ospf/ospf.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index 3fd1c363..823b5e53 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -484,11 +484,17 @@ struct ospf_neighbor #define OPT_R 0x0010 /* OSPFv3, originator is active router */ #define OPT_DC 0x0020 /* Related to demand circuits, not used */ #define OPT_O 0x0040 /* OSPFv2 Opaque LSA (RFC 5250) */ -#define OPT_DN 0x0080 /* OSPFv2 VPN loop prevention (RFC 4576)*/ +#define OPT_DN 0x0080 /* OSPFv2 VPN loop prevention (RFC 4576) */ #define OPT_AF 0x0100 /* OSPFv3 Address Families (RFC 5838) */ #define OPT_L_V3 0x0200 /* OSPFv3, link-local signaling */ #define OPT_AT 0x0400 /* OSPFv3, authentication trailer */ +#define HELLO2_OPT_MASK (OPT_E | OPT_N | OPT_L_V2) +#define DBDES2_OPT_MASK (OPT_E | OPT_L_V2 | OPT_O) + +#define HELLO3_OPT_MASK (OPT_V6 | OPT_E | OPT_N | OPT_R | OPT_AF | OPT_L_V3 | OPT_AT ) +#define DBDES3_OPT_MASK (OPT_V6 | OPT_E | OPT_R | OPT_AF | OPT_L_V3 | OPT_AT ) + /* Router-LSA VEB flags are are stored together with links (OSPFv2) or options (OSPFv3) */ #define OPT_RT_B (0x01 << 24) #define OPT_RT_E (0x02 << 24) |