summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2022-03-11 10:43:58 +0100
committerGitHub <noreply@github.com>2022-03-11 10:43:58 +0100
commit64fac7801c25d3bd206d06be7ef2c3d687e70ec0 (patch)
treee6324244505b3c9181a53a2c9de4f2355792968e
parent97f4bf8095c63d9a8823ffed2ee7454b3f8aba08 (diff)
parent75ba864c814bbe2a0dbfefd33a7a3d0e692be256 (diff)
Merge pull request #10743 from donaldsharp/bgp_no_ll
-rw-r--r--bgpd/bgp_errors.c6
-rw-r--r--bgpd/bgp_errors.h1
-rw-r--r--bgpd/bgp_zebra.c6
3 files changed, 13 insertions, 0 deletions
diff --git a/bgpd/bgp_errors.c b/bgpd/bgp_errors.c
index f11717b41f..193c96a169 100644
--- a/bgpd/bgp_errors.c
+++ b/bgpd/bgp_errors.c
@@ -475,6 +475,12 @@ static struct log_ref ferr_bgp_err[] = {
.suggestion = "Get log files from router and open an issue",
},
{
+ .code = EC_BGP_NO_LL_ADDRESS_AVAILABLE,
+ .title = "BGP v6 peer with no LL address on outgoing interface",
+ .description = "BGP when using a v6 peer requires a v6 LL address to be configured on the outgoing interface as per RFC 4291 section 2.1",
+ .suggestion = "Add a v6 LL address to the outgoing interfaces as per RFC",
+ },
+ {
.code = END_FERR,
}
};
diff --git a/bgpd/bgp_errors.h b/bgpd/bgp_errors.h
index 20056d382a..0b71af3fc6 100644
--- a/bgpd/bgp_errors.h
+++ b/bgpd/bgp_errors.h
@@ -101,6 +101,7 @@ enum bgp_log_refs {
EC_BGP_ROUTER_ID_SAME,
EC_BGP_INVALID_BGP_INSTANCE,
EC_BGP_INVALID_ROUTE,
+ EC_BGP_NO_LL_ADDRESS_AVAILABLE,
};
extern void bgp_error_init(void);
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index c0a9a38773..78eaac7806 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -882,6 +882,12 @@ bool bgp_zebra_nexthop_set(union sockunion *local, union sockunion *remote,
*/
if (!v6_ll_avail && if_is_loopback(ifp))
v6_ll_avail = true;
+ else {
+ flog_warn(
+ EC_BGP_NO_LL_ADDRESS_AVAILABLE,
+ "Interface: %s does not have a v6 LL address associated with it, waiting until one is created for it",
+ ifp->name);
+ }
} else
/* Link-local address. */
{