summaryrefslogtreecommitdiff
path: root/pimd/pim_mroute.c
diff options
context:
space:
mode:
Diffstat (limited to 'pimd/pim_mroute.c')
-rw-r--r--pimd/pim_mroute.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c
index 52d240f54b..dca3bf4af3 100644
--- a/pimd/pim_mroute.c
+++ b/pimd/pim_mroute.c
@@ -713,21 +713,26 @@ int pim_mroute_socket_enable(struct pim_instance *pim)
fd = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
+ if (fd < 0) {
+ zlog_warn("Could not create mroute socket: errno=%d: %s", errno,
+ safe_strerror(errno));
+ return -2;
+ }
+
#ifdef SO_BINDTODEVICE
- setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, pim->vrf->name,
- strlen(pim->vrf->name));
+ if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, pim->vrf->name,
+ strlen(pim->vrf->name))) {
+ zlog_warn("Could not setsockopt SO_BINDTODEVICE: %s",
+ safe_strerror(errno));
+ close(fd);
+ return -3;
+ }
#endif
if (pimd_privs.change(ZPRIVS_LOWER))
zlog_err("pim_mroute_socket_enable: could not lower privs, %s",
safe_strerror(errno));
- if (fd < 0) {
- zlog_warn("Could not create mroute socket: errno=%d: %s", errno,
- safe_strerror(errno));
- return -2;
- }
-
pim->mroute_socket = fd;
if (pim_mroute_set(pim, 1)) {
zlog_warn(