summaryrefslogtreecommitdiffstats
path: root/zebra
diff options
context:
space:
mode:
authorJafar Al-Gharaibeh <jafar@atcorp.com>2024-08-30 04:13:03 +0200
committerGitHub <noreply@github.com>2024-08-30 04:13:03 +0200
commit90787a57fdb787e8d6abdfa23f98fff509004f02 (patch)
treef2977786f8170b54f2bf971033bfb82e4101ac30 /zebra
parentMerge pull request #16692 from donaldsharp/zebra_avoid_ng_null (diff)
parentzebra: Allow blackhole singleton nexthops to be v6 (diff)
downloadfrr-90787a57fdb787e8d6abdfa23f98fff509004f02.tar.xz
frr-90787a57fdb787e8d6abdfa23f98fff509004f02.zip
Merge pull request #16689 from donaldsharp/blackhole_and_afi
Blackhole and afi
Diffstat (limited to 'zebra')
-rw-r--r--zebra/zebra_nhg.c17
-rw-r--r--zebra/zebra_vty.c4
2 files changed, 14 insertions, 7 deletions
diff --git a/zebra/zebra_nhg.c b/zebra/zebra_nhg.c
index 27b7f6340..ffcdcdd6f 100644
--- a/zebra/zebra_nhg.c
+++ b/zebra/zebra_nhg.c
@@ -356,18 +356,23 @@ void zebra_nhe_init(struct nhg_hash_entry *nhe, afi_t afi,
*/
if (nh && (nh->next == NULL)) {
switch (nh->type) {
- case NEXTHOP_TYPE_IFINDEX:
- case NEXTHOP_TYPE_BLACKHOLE:
/*
* This switch case handles setting the afi different
- * for ipv4/v6 routes. Ifindex/blackhole nexthop
+ * for ipv4/v6 routes. Ifindex nexthop
* objects cannot be ambiguous, they must be Address
- * Family specific. If we get here, we will either use
- * the AF of the route, or the one we got passed from
- * here from the kernel.
+ * Family specific as that the kernel relies on these
+ * for some reason. blackholes can be v6 because the
+ * v4 kernel infrastructure allows the usage of v6
+ * blackholes in this case. if we get here, we will
+ * either use the AF of the route, or the one we got
+ * passed from here from the kernel.
*/
+ case NEXTHOP_TYPE_IFINDEX:
nhe->afi = afi;
break;
+ case NEXTHOP_TYPE_BLACKHOLE:
+ nhe->afi = AFI_IP6;
+ break;
case NEXTHOP_TYPE_IPV4_IFINDEX:
case NEXTHOP_TYPE_IPV4:
nhe->afi = AFI_IP;
diff --git a/zebra/zebra_vty.c b/zebra/zebra_vty.c
index 3b786e325..91aa4e400 100644
--- a/zebra/zebra_vty.c
+++ b/zebra/zebra_vty.c
@@ -1195,6 +1195,7 @@ static void show_nexthop_group_out(struct vty *vty, struct nhg_hash_entry *nhe,
json_object_string_add(json, "uptime", up_str);
json_object_string_add(json, "vrf",
vrf_id_to_name(nhe->vrf_id));
+ json_object_string_add(json, "afi", afi2str(nhe->afi));
} else {
vty_out(vty, "ID: %u (%s)\n", nhe->id,
@@ -1208,7 +1209,8 @@ static void show_nexthop_group_out(struct vty *vty, struct nhg_hash_entry *nhe,
vty_out(vty, "\n");
vty_out(vty, " Uptime: %s\n", up_str);
- vty_out(vty, " VRF: %s\n", vrf_id_to_name(nhe->vrf_id));
+ vty_out(vty, " VRF: %s(%s)\n", vrf_id_to_name(nhe->vrf_id),
+ afi2str(nhe->afi));
}
if (CHECK_FLAG(nhe->flags, NEXTHOP_GROUP_VALID)) {