switch (args->event) {
case NB_EV_PREPARE:
case NB_EV_ABORT:
- break;
+ return NB_OK;
case NB_EV_VALIDATE:
zvrf_evpn = zebra_vrf_get_evpn();
- if (!zvrf_evpn)
+ if (!zvrf_evpn) {
+ snprintf(args->errmsg, args->errmsg_len,
+ "evpn vrf is not present.");
return NB_ERR_VALIDATION;
-
+ }
vni = yang_dnode_get_uint32(args->dnode, NULL);
/* Get vrf info from parent node, reject configuration
* if zebra vrf already mapped to different vni id.
pn_dnode = yang_dnode_get_parent(args->dnode, "vrf");
if (pn_dnode) {
vrfname = yang_dnode_get_string(pn_dnode, "./name");
- vrf = vrf_lookup_by_name(vrfname);
- zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
+ zvrf = zebra_vrf_lookup_by_name(vrfname);
+ if (!zvrf) {
+ snprintf(args->errmsg, args->errmsg_len,
+ "zebra vrf info not found for vrf:%s.",
+ vrfname);
+ return NB_ERR_VALIDATION;
+ }
if (zvrf->l3vni && zvrf->l3vni != vni) {
- zlog_debug(
+ snprintf(
+ args->errmsg, args->errmsg_len,
"vni %u cannot be configured as vni %u is already configured under the vrf",
vni, zvrf->l3vni);
return NB_ERR_VALIDATION;
/* Check if this VNI is already present in the system */
zl3vni = zl3vni_lookup(vni);
if (zl3vni) {
- if (IS_ZEBRA_DEBUG_VXLAN)
- zlog_debug(
- "VNI %u is already configured as L3-VNI",
- vni);
+ snprintf(args->errmsg, args->errmsg_len,
+ "VNI %u is already configured as L3-VNI", vni);
return NB_ERR_VALIDATION;
}
case NB_EV_APPLY:
vrf = nb_running_get_entry(args->dnode, NULL, true);
- zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
+ zvrf = zebra_vrf_lookup_by_name(vrf->name);
vni = yang_dnode_get_uint32(args->dnode, NULL);
/* Note: This covers lib_vrf_zebra_prefix_only_modify() config
* along with l3vni config
pfx_only ? 1 : 0, 1)
!= 0) {
if (IS_ZEBRA_DEBUG_VXLAN)
- zlog_debug(
+ snprintf(
+ args->errmsg, args->errmsg_len,
"vrf vni %u mapping failed with error: %s",
vni, err);
return NB_ERR;
case NB_EV_PREPARE:
case NB_EV_ABORT:
case NB_EV_VALIDATE:
- break;
+ return NB_OK;
case NB_EV_APPLY:
vrf = nb_running_get_entry(args->dnode, NULL, true);
- zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
+ zvrf = zebra_vrf_lookup_by_name(vrf->name);
vni = yang_dnode_get_uint32(args->dnode, NULL);
if (!zl3vni_lookup(vni))
return NB_OK;
- if (zvrf->l3vni != vni)
+ if (zvrf->l3vni != vni) {
+ snprintf(args->errmsg, args->errmsg_len,
+ "vrf %s has different vni %u mapped",
+ vrf->name, zvrf->l3vni);
return NB_ERR;
+ }
if (is_l3vni_for_prefix_routes_only(zvrf->l3vni))
filter = 1;