diff options
| author | Quentin Young <qlyoung@nvidia.com> | 2020-07-30 16:44:46 -0400 | 
|---|---|---|
| committer | Quentin Young <qlyoung@nvidia.com> | 2020-08-11 14:26:33 -0400 | 
| commit | f4893b09ab77a0b37c087eb4e89debc6a8564aab (patch) | |
| tree | 3b60e359d56cb909de5a600d6b0e09400c53e9a6 /vrrpd/vrrp_northbound.c | |
| parent | ee723e13825920376a3938a5e3c0b355b4861e4a (diff) | |
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>
Diffstat (limited to 'vrrpd/vrrp_northbound.c')
| -rw-r--r-- | vrrpd/vrrp_northbound.c | 13 | 
1 files 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;  | 
