summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-12-09 12:05:29 -0500
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-01-30 11:48:35 -0500
commitd14b95ce968a44a8278745fc23ac9f37e98629a1 (patch)
treea07f93790c944ea4c8fcee51a1ed7ad5e6b2bf51
parent38f4935a5d0868517f949696186e1828cee3ae20 (diff)
bgpd, zebra: Pass distance as part of the ZEBRA_NEXTHOP_UPDATE
When zebra calls routing protocols back with either ZEBRA_NEXTHOP_UPDATE or ZEBRA_IMPORT_CHECK_UPDATE pass the distance value too. This is to set us up for nht for pim as that it needs the distance sometimes too. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--bgpd/bgp_nht.c1
-rw-r--r--zebra/zebra_rnh.c6
2 files changed, 5 insertions, 2 deletions
diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c
index 057e2ace76..aa752280cf 100644
--- a/bgpd/bgp_nht.c
+++ b/bgpd/bgp_nht.c
@@ -377,6 +377,7 @@ bgp_parse_nexthop_update (int command, vrf_id_t vrf_id)
bgp_unlock_node (rn);
bnc->last_update = bgp_clock();
bnc->change_flags = 0;
+ stream_getc (s); // Distance but not currently used
metric = stream_getl (s);
nexthop_num = stream_getc (s);
diff --git a/zebra/zebra_rnh.c b/zebra/zebra_rnh.c
index 182cfe552d..b180930a0a 100644
--- a/zebra/zebra_rnh.c
+++ b/zebra/zebra_rnh.c
@@ -878,6 +878,7 @@ send_client (struct rnh *rnh, struct zserv *client, rnh_type_t type, vrf_id_t vr
}
if (rib)
{
+ stream_putc (s, rib->distance);
stream_putl (s, rib->metric);
num = 0;
nump = stream_get_endp(s);
@@ -917,8 +918,9 @@ send_client (struct rnh *rnh, struct zserv *client, rnh_type_t type, vrf_id_t vr
}
else
{
- stream_putl (s, 0);
- stream_putc (s, 0);
+ stream_putc (s, 0); // distance
+ stream_putl (s, 0); // metric
+ stream_putc (s, 0); // nexthops
}
stream_putw_at (s, 0, stream_get_endp (s));