summaryrefslogtreecommitdiff
path: root/staticd/static_nht.c
diff options
context:
space:
mode:
Diffstat (limited to 'staticd/static_nht.c')
-rw-r--r--staticd/static_nht.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/staticd/static_nht.c b/staticd/static_nht.c
index 06d27c6f59..367ee85040 100644
--- a/staticd/static_nht.c
+++ b/staticd/static_nht.c
@@ -49,8 +49,8 @@ static void static_nht_update_path(struct static_path *pn, struct prefix *nhp,
static_zebra_route_add(pn, true);
}
-static void static_nht_update_safi(struct prefix *sp, struct prefix *nhp,
- uint32_t nh_num, afi_t afi, safi_t safi,
+static void static_nht_update_safi(const struct prefix *sp, const struct prefix *ssrc_p,
+ struct prefix *nhp, uint32_t nh_num, afi_t afi, safi_t safi,
struct static_vrf *svrf, vrf_id_t nh_vrf_id)
{
struct route_table *stable;
@@ -63,7 +63,7 @@ static void static_nht_update_safi(struct prefix *sp, struct prefix *nhp,
return;
if (sp) {
- rn = srcdest_rnode_lookup(stable, sp, NULL);
+ rn = srcdest_rnode_lookup(stable, sp, (const struct prefix_ipv6 *)ssrc_p);
if (rn && rn->info) {
si = static_route_info_from_rnode(rn);
frr_each(static_path_list, &si->path_list, pn) {
@@ -75,7 +75,7 @@ static void static_nht_update_safi(struct prefix *sp, struct prefix *nhp,
return;
}
- for (rn = route_top(stable); rn; rn = route_next(rn)) {
+ for (rn = route_top(stable); rn; rn = srcdest_route_next(rn)) {
si = static_route_info_from_rnode(rn);
if (!si)
continue;
@@ -85,14 +85,13 @@ static void static_nht_update_safi(struct prefix *sp, struct prefix *nhp,
}
}
-void static_nht_update(struct prefix *sp, struct prefix *nhp, uint32_t nh_num,
- afi_t afi, safi_t safi, vrf_id_t nh_vrf_id)
+void static_nht_update(const struct prefix *sp, const struct prefix *ssrc_p, struct prefix *nhp,
+ uint32_t nh_num, afi_t afi, safi_t safi, vrf_id_t nh_vrf_id)
{
struct static_vrf *svrf;
RB_FOREACH (svrf, svrf_name_head, &svrfs)
- static_nht_update_safi(sp, nhp, nh_num, afi, safi, svrf,
- nh_vrf_id);
+ static_nht_update_safi(sp, ssrc_p, nhp, nh_num, afi, safi, svrf, nh_vrf_id);
}
static void static_nht_reset_start_safi(struct prefix *nhp, afi_t afi,
@@ -109,7 +108,7 @@ static void static_nht_reset_start_safi(struct prefix *nhp, afi_t afi,
if (!stable)
return;
- for (rn = route_top(stable); rn; rn = route_next(rn)) {
+ for (rn = route_top(stable); rn; rn = srcdest_route_next(rn)) {
si = static_route_info_from_rnode(rn);
if (!si)
continue;
@@ -150,8 +149,8 @@ void static_nht_reset_start(struct prefix *nhp, afi_t afi, safi_t safi,
static_nht_reset_start_safi(nhp, afi, safi, svrf, nh_vrf_id);
}
-static void static_nht_mark_state_safi(struct prefix *sp, afi_t afi,
- safi_t safi, struct vrf *vrf,
+static void static_nht_mark_state_safi(const struct prefix *sp, const struct prefix *ssrc_p,
+ afi_t afi, safi_t safi, struct vrf *vrf,
enum static_install_states state)
{
struct static_vrf *svrf;
@@ -169,7 +168,7 @@ static void static_nht_mark_state_safi(struct prefix *sp, afi_t afi,
if (!stable)
return;
- rn = srcdest_rnode_lookup(stable, sp, NULL);
+ rn = srcdest_rnode_lookup(stable, sp, (const struct prefix_ipv6 *)ssrc_p);
if (!rn)
return;
si = rn->info;
@@ -184,8 +183,8 @@ static void static_nht_mark_state_safi(struct prefix *sp, afi_t afi,
route_unlock_node(rn);
}
-void static_nht_mark_state(struct prefix *sp, safi_t safi, vrf_id_t vrf_id,
- enum static_install_states state)
+void static_nht_mark_state(const struct prefix *sp, const struct prefix *ssrc_p, safi_t safi,
+ vrf_id_t vrf_id, enum static_install_states state)
{
struct vrf *vrf;
@@ -198,5 +197,5 @@ void static_nht_mark_state(struct prefix *sp, safi_t safi, vrf_id_t vrf_id,
if (!vrf || !vrf->info)
return;
- static_nht_mark_state_safi(sp, afi, safi, vrf, state);
+ static_nht_mark_state_safi(sp, ssrc_p, afi, safi, vrf, state);
}