]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6_network.c
Merge pull request #5081 from pguibert6WIND/show_brief_doc
[mirror_frr.git] / ospf6d / ospf6_network.c
index 8988a53e5d3de74437f936c3163ec8b29bb80782..9a18680b8b532c1a2fa16b430c58ab2d9fafeaae 100644 (file)
@@ -73,10 +73,19 @@ static void ospf6_set_checksum(void)
 #endif /* DISABLE_IPV6_CHECKSUM */
 }
 
+void ospf6_serv_close(void)
+{
+       if (ospf6_sock > 0) {
+               close(ospf6_sock);
+               ospf6_sock = -1;
+               return;
+       }
+}
+
 /* Make ospf6d's server socket. */
 int ospf6_serv_sock(void)
 {
-       frr_elevate_privs(&ospf6d_privs) {
+       frr_with_privs(&ospf6d_privs) {
 
                ospf6_sock = socket(AF_INET6, SOCK_RAW, IPPROTO_OSPFIGP);
                if (ospf6_sock < 0) {
@@ -118,7 +127,7 @@ int ospf6_sso(ifindex_t ifindex, struct in6_addr *group, int option)
                         sizeof(mreq6));
        if (ret < 0) {
                flog_err_sys(
-                       LIB_ERR_SOCKET,
+                       EC_LIB_SOCKET,
                        "Network: setsockopt (%d) on ifindex %d failed: %s",
                        option, ifindex, safe_strerror(errno));
                return ret;
@@ -163,6 +172,7 @@ int ospf6_sendmsg(struct in6_addr *src, struct in6_addr *dst,
        assert(dst);
        assert(*ifindex);
 
+       memset(&cmsgbuf, 0, sizeof(cmsgbuf));
        scmsgp = (struct cmsghdr *)&cmsgbuf;
        pktinfo = (struct in6_pktinfo *)(CMSG_DATA(scmsgp));
        memset(&dst_sin6, 0, sizeof(struct sockaddr_in6));