mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 14:05:31 +00:00
bfdd: fix single hop IPv6 configurations
Don't assume IPv6 will always be multi hop and handle the single hop link-local address case. Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
This commit is contained in:
parent
0ff3b1118b
commit
2435b7defe
@ -208,13 +208,17 @@ int bfd_session_enable(struct bfd_session *bs)
|
|||||||
|
|
||||||
/* Set the IPv6 scope id for link-local addresses. */
|
/* Set the IPv6 scope id for link-local addresses. */
|
||||||
if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_IPV6)) {
|
if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_IPV6)) {
|
||||||
sin6 = &bs->mhop.peer.sa_sin6;
|
sin6 = (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_MH))
|
||||||
|
? &bs->mhop.peer.sa_sin6
|
||||||
|
: &bs->shop.peer.sa_sin6;
|
||||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
||||||
sin6->sin6_scope_id = bs->ifp != NULL
|
sin6->sin6_scope_id = bs->ifp != NULL
|
||||||
? bs->ifp->ifindex
|
? bs->ifp->ifindex
|
||||||
: IFINDEX_INTERNAL;
|
: IFINDEX_INTERNAL;
|
||||||
|
|
||||||
sin6 = &bs->mhop.local.sa_sin6;
|
sin6 = (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_MH))
|
||||||
|
? &bs->mhop.local.sa_sin6
|
||||||
|
: &bs->local_address.sa_sin6;
|
||||||
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
|
||||||
sin6->sin6_scope_id = bs->ifp != NULL
|
sin6->sin6_scope_id = bs->ifp != NULL
|
||||||
? bs->ifp->ifindex
|
? bs->ifp->ifindex
|
||||||
|
Loading…
Reference in New Issue
Block a user