]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_msdp_socket.c
pimd: Cleanup a variety of SA issues
[mirror_frr.git] / pimd / pim_msdp_socket.c
index 9473462e6325ed08db0400d4266b41f0e970e7bb..f245a043534af4557dca3210e35dfab4418e6906 100644 (file)
@@ -156,9 +156,15 @@ int pim_msdp_sock_listen(struct pim_instance *pim)
                if (!ifp) {
                        zlog_err("%s: Unable to lookup vrf interface: %s",
                                 __PRETTY_FUNCTION__, pim->vrf->name);
+                       close(sock);
+                       return -1;
+               }
+               if (pim_socket_bind(sock, ifp)) {
+                       zlog_err("%s: Unable to bind to socket: %s",
+                                __PRETTY_FUNCTION__, safe_strerror(errno));
+                       close(sock);
                        return -1;
                }
-               pim_socket_bind(sock, ifp);
        }
 
        if (pimd_privs.change(ZPRIVS_RAISE)) {
@@ -236,7 +242,13 @@ int pim_msdp_sock_connect(struct pim_msdp_peer *mp)
                                 __PRETTY_FUNCTION__, mp->pim->vrf->name);
                        return -1;
                }
-               pim_socket_bind(mp->fd, ifp);
+               if (pim_socket_bind(mp->fd, ifp)) {
+                       zlog_err("%s: Unable to bind to socket: %s",
+                                __PRETTY_FUNCTION__, safe_strerror(errno));
+                       close(mp->fd);
+                       mp->fd = -1;
+                       return -1;
+               }
        }
 
        set_nonblocking(mp->fd);