From: Amol Lad Date: Sat, 17 Oct 2020 05:32:19 +0000 (+0530) Subject: nhrpd: Set correct prefix length in nhrp registration X-Git-Tag: base_7.6~66^2~7 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f7f9a3770e5fed62d642a8feef9f972710aeba7b;p=mirror%2Ffrr.git nhrpd: Set correct prefix length in nhrp registration RFC2332 section 5.2.1 states (regarding the uniqueness bit) that: Note that when this bit is set in an NHRP Registration Request, only a single CIE may be specified in the NHRP Registration Request and that CIE must have the Prefix Length field set to 0xFF. the prefix length is the widest acceptable destination protocol address prefix. However, if "Uniqueness" bit is set then it must be 255 This patch implements this requirement, which fixes interoperability with Cisco NHRP hub routers. Signed-off-by: Reuben Dowle --- diff --git a/nhrpd/nhrp_nhs.c b/nhrpd/nhrp_nhs.c old mode 100644 new mode 100755 index 085cab347f..3b604593c8 --- a/nhrpd/nhrp_nhs.c +++ b/nhrpd/nhrp_nhs.c @@ -197,7 +197,8 @@ static int nhrp_reg_send_req(struct thread *t) /* FIXME: push CIE for each local protocol address */ cie = nhrp_cie_push(zb, NHRP_CODE_SUCCESS, NULL, NULL); - cie->prefix_length = 0xff; + /* RFC2332 5.2.1 if unique is set then prefix length must be 0xff */ + cie->prefix_length = (if_ad->flags & NHRP_IFF_REG_NO_UNIQUE) ? 8 * sockunion_get_addrlen(dst_proto) : 0xff; cie->holding_time = htons(if_ad->holdtime); cie->mtu = htons(if_ad->mtu);