vrrpd: fix improper NB query during validation

We were querying the NB for an interface and expecting it to exist, but
we were doing this during a validation run when the interface hasn't yet
been created, resulting in an abort. Adjust validation checks to handle
this scenario.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
This commit is contained in:
Quentin Young 2020-07-30 16:44:46 -04:00
parent ee723e1382
commit f4893b09ab

View File

@ -40,15 +40,18 @@ static int lib_interface_vrrp_vrrp_group_create(struct nb_cb_create_args *args)
uint8_t version = 3;
struct vrrp_vrouter *vr;
ifp = nb_running_get_entry(args->dnode, NULL, true);
ifp = nb_running_get_entry(args->dnode, NULL, false);
vrid = yang_dnode_get_uint8(args->dnode, "./virtual-router-id");
version = yang_dnode_get_enum(args->dnode, "./version");
switch (event) {
switch (args->event) {
case NB_EV_VALIDATE:
vr = vrrp_lookup(ifp, vrid);
if (vr && vr->autoconf)
return NB_ERR_VALIDATION;
if (ifp) {
vr = vrrp_lookup(ifp, vrid);
if (vr && vr->autoconf)
return NB_ERR_VALIDATION;
}
return NB_OK;
case NB_EV_PREPARE:
case NB_EV_ABORT:
return NB_OK;