From f4893b09ab77a0b37c087eb4e89debc6a8564aab Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Thu, 30 Jul 2020 16:44:46 -0400 Subject: [PATCH] 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 --- vrrpd/vrrp_northbound.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/vrrpd/vrrp_northbound.c b/vrrpd/vrrp_northbound.c index ad6775dd35..bc5acdcd17 100644 --- a/vrrpd/vrrp_northbound.c +++ b/vrrpd/vrrp_northbound.c @@ -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; -- 2.39.5