summaryrefslogtreecommitdiff
path: root/vrrpd/vrrp_arp.c
diff options
context:
space:
mode:
authorQuentin Young <qlyoung@cumulusnetworks.com>2018-12-04 20:42:17 +0000
committerQuentin Young <qlyoung@cumulusnetworks.com>2019-05-17 00:27:08 +0000
commit4074400076685c13f21558c973713b35b38fa397 (patch)
tree729bd3dfd715de395cadae96accf475d39f9eb3e /vrrpd/vrrp_arp.c
parentb6029d6a5f29e3fce036e3013b992e47af77639d (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.c12
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;
+}