]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospfd/ospf_network.c
lib: enforce vrf_name_to_id by returning default_vrf when name is null
[mirror_frr.git] / ospfd / ospf_network.c
index 1fb930659e5e01ef5b3fd1f91e77ab5912d555e2..e30bb0ffe1238068a334e748dbaf88e8aa0800d6 100644 (file)
@@ -51,7 +51,8 @@ int ospf_if_add_allspfrouters(struct ospf *top, struct prefix *p,
                                        p->u.prefix4, htonl(OSPF_ALLSPFROUTERS),
                                        ifindex);
        if (ret < 0)
-               zlog_warn(
+               flog_err(
+                       EC_LIB_SOCKET,
                        "can't setsockopt IP_ADD_MEMBERSHIP (fd %d, addr %s, "
                        "ifindex %u, AllSPFRouters): %s; perhaps a kernel limit "
                        "on # of multicast group memberships has been exceeded?",
@@ -76,11 +77,11 @@ int ospf_if_drop_allspfrouters(struct ospf *top, struct prefix *p,
                                        p->u.prefix4, htonl(OSPF_ALLSPFROUTERS),
                                        ifindex);
        if (ret < 0)
-               zlog_warn(
-                       "can't setsockopt IP_DROP_MEMBERSHIP (fd %d, addr %s, "
-                       "ifindex %u, AllSPFRouters): %s",
-                       top->fd, inet_ntoa(p->u.prefix4), ifindex,
-                       safe_strerror(errno));
+               flog_err(EC_LIB_SOCKET,
+                        "can't setsockopt IP_DROP_MEMBERSHIP (fd %d, addr %s, "
+                        "ifindex %u, AllSPFRouters): %s",
+                        top->fd, inet_ntoa(p->u.prefix4), ifindex,
+                        safe_strerror(errno));
        else {
                if (IS_DEBUG_OSPF_EVENT)
                        zlog_debug(
@@ -101,7 +102,8 @@ int ospf_if_add_alldrouters(struct ospf *top, struct prefix *p,
                                        p->u.prefix4, htonl(OSPF_ALLDROUTERS),
                                        ifindex);
        if (ret < 0)
-               zlog_warn(
+               flog_err(
+                       EC_LIB_SOCKET,
                        "can't setsockopt IP_ADD_MEMBERSHIP (fd %d, addr %s, "
                        "ifindex %u, AllDRouters): %s; perhaps a kernel limit "
                        "on # of multicast group memberships has been exceeded?",
@@ -124,11 +126,11 @@ int ospf_if_drop_alldrouters(struct ospf *top, struct prefix *p,
                                        p->u.prefix4, htonl(OSPF_ALLDROUTERS),
                                        ifindex);
        if (ret < 0)
-               zlog_warn(
-                       "can't setsockopt IP_DROP_MEMBERSHIP (fd %d, addr %s, "
-                       "ifindex %u, AllDRouters): %s",
-                       top->fd, inet_ntoa(p->u.prefix4), ifindex,
-                       safe_strerror(errno));
+               flog_err(EC_LIB_SOCKET,
+                        "can't setsockopt IP_DROP_MEMBERSHIP (fd %d, addr %s, "
+                        "ifindex %u, AllDRouters): %s",
+                        top->fd, inet_ntoa(p->u.prefix4), ifindex,
+                        safe_strerror(errno));
        else
                zlog_debug(
                        "interface %s [%u] leave AllDRouters Multicast group.",
@@ -145,8 +147,9 @@ int ospf_if_ipmulticast(struct ospf *top, struct prefix *p, ifindex_t ifindex)
        /* Prevent receiving self-origined multicast packets. */
        ret = setsockopt_ipv4_multicast_loop(top->fd, 0);
        if (ret < 0)
-               zlog_warn("can't setsockopt IP_MULTICAST_LOOP(0) for fd %d: %s",
-                         top->fd, safe_strerror(errno));
+               flog_err(EC_LIB_SOCKET,
+                        "can't setsockopt IP_MULTICAST_LOOP(0) for fd %d: %s",
+                        top->fd, safe_strerror(errno));
 
        /* Explicitly set multicast ttl to 1 -- endo. */
        val = 1;
@@ -154,19 +157,20 @@ int ospf_if_ipmulticast(struct ospf *top, struct prefix *p, ifindex_t ifindex)
        ret = setsockopt(top->fd, IPPROTO_IP, IP_MULTICAST_TTL, (void *)&val,
                         len);
        if (ret < 0)
-               zlog_warn("can't setsockopt IP_MULTICAST_TTL(1) for fd %d: %s",
-                         top->fd, safe_strerror(errno));
+               flog_err(EC_LIB_SOCKET,
+                        "can't setsockopt IP_MULTICAST_TTL(1) for fd %d: %s",
+                        top->fd, safe_strerror(errno));
 #ifndef GNU_LINUX
        /* For GNU LINUX ospf_write uses IP_PKTINFO, in_pktinfo to send
         * packet out of ifindex. Below would be used Non Linux system.
         */
        ret = setsockopt_ipv4_multicast_if(top->fd, p->u.prefix4, ifindex);
        if (ret < 0)
-               zlog_warn(
-                       "can't setsockopt IP_MULTICAST_IF(fd %d, addr %s, "
-                       "ifindex %u): %s",
-                       top->fd, inet_ntoa(p->u.prefix4), ifindex,
-                       safe_strerror(errno));
+               flog_err(EC_LIB_SOCKET,
+                        "can't setsockopt IP_MULTICAST_IF(fd %d, addr %s, "
+                        "ifindex %u): %s",
+                        top->fd, inet_ntoa(p->u.prefix4), ifindex,
+                        safe_strerror(errno));
 #endif
 
        return ret;
@@ -190,7 +194,8 @@ int ospf_sock_init(struct ospf *ospf)
                ospf_sock = vrf_socket(AF_INET, SOCK_RAW, IPPROTO_OSPFIGP,
                                       ospf->vrf_id, ospf->name);
                if (ospf_sock < 0) {
-                       zlog_err("ospf_read_sock_init: socket: %s",
+                       flog_err(EC_LIB_SOCKET,
+                                "ospf_read_sock_init: socket: %s",
                                 safe_strerror(errno));
                        exit(1);
                }
@@ -200,8 +205,9 @@ int ospf_sock_init(struct ospf *ospf)
                ret = setsockopt(ospf_sock, IPPROTO_IP, IP_HDRINCL, &hincl,
                                 sizeof(hincl));
                if (ret < 0) {
-                       zlog_warn("Can't set IP_HDRINCL option for fd %d: %s",
-                                 ospf_sock, safe_strerror(errno));
+                       flog_err(EC_LIB_SOCKET,
+                                "Can't set IP_HDRINCL option for fd %d: %s",
+                                ospf_sock, safe_strerror(errno));
                        close(ospf_sock);
                        break;
                }
@@ -211,21 +217,23 @@ int ospf_sock_init(struct ospf *ospf)
                ret = setsockopt_ipv4_tos(ospf_sock,
                                          IPTOS_PREC_INTERNETCONTROL);
                if (ret < 0) {
-                       zlog_warn("can't set sockopt IP_TOS %d to socket %d: %s",
-                                 tos, ospf_sock, safe_strerror(errno));
+                       flog_err(EC_LIB_SOCKET,
+                                "can't set sockopt IP_TOS %d to socket %d: %s",
+                                tos, ospf_sock, safe_strerror(errno));
                        close(ospf_sock); /* Prevent sd leak. */
                        break;
                }
 #else /* !IPTOS_PREC_INTERNETCONTROL */
 #warning "IP_HDRINCL not available, nor is IPTOS_PREC_INTERNETCONTROL"
-               zlog_warn("IP_HDRINCL option not available");
+               flog_err(EC_LIB_UNAVAILABLE, "IP_HDRINCL option not available");
 #endif /* IP_HDRINCL */
 
                ret = setsockopt_ifindex(AF_INET, ospf_sock, 1);
 
                if (ret < 0)
-                       zlog_warn("Can't set pktinfo option for fd %d",
-                                 ospf_sock);
+                       flog_err(EC_LIB_SOCKET,
+                                "Can't set pktinfo option for fd %d",
+                                ospf_sock);
 
                setsockopt_so_sendbuf(ospf_sock, bufsize);
                setsockopt_so_recvbuf(ospf_sock, bufsize);