diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2022-03-07 08:00:26 -0500 |
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2022-03-07 08:00:26 -0500 |
| commit | 75ba864c814bbe2a0dbfefd33a7a3d0e692be256 (patch) | |
| tree | adf53277217e8b7d39cd0296f6bff37b98018f61 | |
| parent | 583ba572b7d4c486d1aba86de864e142cea433a2 (diff) | |
bgpd: Warn user when an interface has no v6 LL address associated with it
When BGP detects that a peering is using a global address but no v6 LL
address has been created for the interface that the global address is
on warn the user that something is amiss and they need to fix it.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| -rw-r--r-- | bgpd/bgp_errors.c | 6 | ||||
| -rw-r--r-- | bgpd/bgp_errors.h | 1 | ||||
| -rw-r--r-- | bgpd/bgp_zebra.c | 6 |
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. */ { |
