diff options
| author | Quentin Young <qlyoung@cumulusnetworks.com> | 2018-12-04 20:42:17 +0000 | 
|---|---|---|
| committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2019-05-17 00:27:08 +0000 | 
| commit | 4074400076685c13f21558c973713b35b38fa397 (patch) | |
| tree | 729bd3dfd715de395cadae96accf475d39f9eb3e /vrrpd/vrrp_arp.c | |
| parent | b6029d6a5f29e3fce036e3013b992e47af77639d (diff) | |
vrrpd: get sockets working
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'vrrpd/vrrp_arp.c')
| -rw-r--r-- | vrrpd/vrrp_arp.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/vrrpd/vrrp_arp.c b/vrrpd/vrrp_arp.c index cbea02212b..a67af4e104 100644 --- a/vrrpd/vrrp_arp.c +++ b/vrrpd/vrrp_arp.c @@ -163,11 +163,16 @@ void vrrp_garp_init(void)  {  	/* Create the socket descriptor */  	/* FIXME: why ETH_P_RARP? */ -	garp_fd = socket(PF_PACKET, SOCK_RAW | SOCK_CLOEXEC, htons(ETH_P_RARP)); +	errno = 0; +	frr_elevate_privs(&vrrp_privs) { +		garp_fd = socket(PF_PACKET, SOCK_RAW | SOCK_CLOEXEC, +				 htons(ETH_P_RARP)); +	}  	if (garp_fd > 0)  		zlog_info("Initialized gratuitous ARP socket");  	else { +		perror("Error initializing gratuitous ARP socket");  		zlog_err("Error initializing gratuitous ARP socket");  		return;  	} @@ -178,3 +183,8 @@ void vrrp_garp_fini(void)  	close(garp_fd);  	garp_fd = -1;  } + +bool vrrp_garp_is_init(void) +{ +	return garp_fd > 0; +}  | 
