From 2435b7defe734ab42f8b30368ff842aa0a5b6c42 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Wed, 6 Mar 2019 17:50:04 -0300 Subject: [PATCH] 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 --- bfdd/bfd.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bfdd/bfd.c b/bfdd/bfd.c index be6f2caa4486..36133f572711 100644 --- a/bfdd/bfd.c +++ b/bfdd/bfd.c @@ -208,13 +208,17 @@ int bfd_session_enable(struct bfd_session *bs) /* Set the IPv6 scope id for link-local addresses. */ 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)) sin6->sin6_scope_id = bs->ifp != NULL ? bs->ifp->ifindex : 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)) sin6->sin6_scope_id = bs->ifp != NULL ? bs->ifp->ifindex