"./gateway"));
nh = static_add_nexthop(rn, pn, info->safi, info->svrf, nh_type,
&ipaddr, ifname, nh_vrf, 0);
- if (!nh) {
- char buf[SRCDEST2STR_BUFFER];
-
- flog_warn(
- EC_LIB_NB_CB_CONFIG_APPLY,
- "%s : nh [%d:%s:%s:%s] nexthop creation failed",
- srcdest_rnode2str(rn, buf, sizeof(buf)),
- nh_type, ifname,
- yang_dnode_get_string(args->dnode, "./gateway"),
- nh_vrf);
- return NB_ERR;
- }
nb_running_set_entry(args->dnode, nh);
break;
}
route_lock_node(rn);
- nh_svrf = static_vty_get_unknown_vrf(nh_vrf);
-
- if (!nh_svrf)
- return NULL;
+ nh_svrf = static_vrf_lookup_by_name(nh_vrf);
/* Make new static route structure. */
nh = XCALLOC(MTYPE_STATIC_NEXTHOP, sizeof(struct static_nexthop));
nh->type = type;
nh->color = color;
- nh->nh_vrf_id = nh_svrf->vrf->vrf_id;
- strlcpy(nh->nh_vrfname, nh_svrf->vrf->name, sizeof(nh->nh_vrfname));
+ nh->nh_vrf_id = nh_svrf ? nh_svrf->vrf->vrf_id : VRF_UNKNOWN;
+ strlcpy(nh->nh_vrfname, nh_vrf, sizeof(nh->nh_vrfname));
if (ifname)
strlcpy(nh->ifname, ifname, sizeof(nh->ifname));
}
static_nexthop_list_add_after(&(pn->nexthop_list), cp, nh);
- if (nh_svrf->vrf->vrf_id == VRF_UNKNOWN)
+ if (nh->nh_vrf_id == VRF_UNKNOWN)
return nh;
/* check whether interface exists in system & install if it does */
break;
case STATIC_IPV4_GATEWAY_IFNAME:
case STATIC_IPV6_GATEWAY_IFNAME:
- ifp = if_lookup_by_name(ifname, nh_svrf->vrf->vrf_id);
+ ifp = if_lookup_by_name(ifname, nh->nh_vrf_id);
if (ifp && ifp->ifindex != IFINDEX_INTERNAL)
nh->ifindex = ifp->ifindex;
else
nh->bh_type = STATIC_BLACKHOLE_NULL;
break;
case STATIC_IFNAME:
- ifp = if_lookup_by_name(ifname, nh_svrf->vrf->vrf_id);
+ ifp = if_lookup_by_name(ifname, nh->nh_vrf_id);
if (ifp && ifp->ifindex != IFINDEX_INTERNAL) {
nh->ifindex = ifp->ifindex;
} else
struct static_vrf *svrf, const char *ifname,
static_types type, const char *nh_vrf)
{
- struct static_vrf *nh_svrf;
struct interface *ifp;
- nh_svrf = static_vty_get_unknown_vrf(nh_vrf);
-
- if (!nh_svrf)
- return;
-
- if (nh_svrf->vrf->vrf_id == VRF_UNKNOWN)
+ if (nh->nh_vrf_id == VRF_UNKNOWN)
return;
/* check whether interface exists in system & install if it does */
static_install_path(rn, pn, safi, svrf);
break;
case STATIC_IFNAME:
- ifp = if_lookup_by_name(ifname, nh_svrf->vrf->vrf_id);
+ ifp = if_lookup_by_name(ifname, nh->nh_vrf_id);
if (ifp && ifp->ifindex != IFINDEX_INTERNAL)
static_install_path(rn, pn, safi, svrf);
safi_t safi, struct static_vrf *svrf,
struct static_nexthop *nh)
{
- struct static_vrf *nh_svrf;
-
- nh_svrf = static_vrf_lookup_by_name(nh->nh_vrfname);
-
static_nexthop_list_del(&(pn->nexthop_list), nh);
- if (nh_svrf->vrf->vrf_id == VRF_UNKNOWN)
+ if (nh->nh_vrf_id == VRF_UNKNOWN)
goto EXIT;
static_zebra_nht_register(rn, nh, false);