diff options
Diffstat (limited to 'vrrpd/vrrp.c')
| -rw-r--r-- | vrrpd/vrrp.c | 9 | 
1 files changed, 5 insertions, 4 deletions
diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c index d50fb4f2ec..02652d6abf 100644 --- a/vrrpd/vrrp.c +++ b/vrrpd/vrrp.c @@ -709,6 +709,8 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r)  		break;  	} +	int ret = 0; +  	sockopt_reuseaddr(r->sock_tx);  	if (bind(r->sock_tx, (const struct sockaddr *)&su, sizeof(su)) < 0) {  		zlog_err( @@ -719,7 +721,7 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r)  				  (const void *)&c->address->u.prefix, ipstr,  				  sizeof(ipstr)),  			safe_strerror(errno)); -		return -1; +		ret = -1;  	} else {  		DEBUGD(&vrrp_dbg_sock,  		       VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM @@ -729,7 +731,7 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r)  				 ipstr, sizeof(ipstr)));  	} -	return 0; +	return ret;  } @@ -2365,9 +2367,8 @@ void vrrp_fini(void)  	struct listnode *ln;  	struct vrrp_vrouter *vr; -	for (ALL_LIST_ELEMENTS_RO(vrs, ln, vr)) { +	for (ALL_LIST_ELEMENTS_RO(vrs, ln, vr))  		vrrp_vrouter_destroy(vr); -	}  	list_delete(&vrs);  | 
