]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/if_ioctl.c
isisd: implement the 'lsp-too-large' notification
[mirror_frr.git] / zebra / if_ioctl.c
index b506315ebfcf7e720cbd9b758ffc8d0f98f3d82b..df79d285a3609e3807523928be4dc83978b13290 100644 (file)
 #include "log.h"
 #include "vrf.h"
 #include "vty.h"
+#include "lib_errors.h"
 
 #include "zebra/interface.h"
 #include "zebra/rib.h"
+#include "zebra/rt.h"
+#include "zebra/zebra_errors.h"
 
 #include <ifaddrs.h>
 
@@ -55,8 +58,9 @@ static int interface_list_ioctl(void)
        /* Normally SIOCGIFCONF works with AF_INET socket. */
        sock = socket(AF_INET, SOCK_DGRAM, 0);
        if (sock < 0) {
-               zlog_warn("Can't make AF_INET socket stream: %s",
-                         safe_strerror(errno));
+               flog_err_sys(EC_LIB_SOCKET,
+                            "Can't make AF_INET socket stream: %s",
+                            safe_strerror(errno));
                return -1;
        }
 
@@ -84,7 +88,8 @@ static int interface_list_ioctl(void)
                ret = ioctl(sock, SIOCGIFCONF, &ifconf);
 
                if (ret < 0) {
-                       zlog_warn("SIOCGIFCONF: %s", safe_strerror(errno));
+                       flog_err_sys(EC_LIB_SYSTEM_CALL, "SIOCGIFCONF: %s",
+                                    safe_strerror(errno));
                        goto end;
                }
                /* Repeatedly get info til buffer fails to grow. */
@@ -105,7 +110,7 @@ static int interface_list_ioctl(void)
                unsigned int size;
 
                ifreq = (struct ifreq *)((caddr_t)ifconf.ifc_req + n);
-               ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT, 0);
+               ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT);
                if_add_update(ifp);
                size = ifreq->ifr_addr.sa_len;
                if (size < sizeof(ifreq->ifr_addr))
@@ -115,7 +120,7 @@ static int interface_list_ioctl(void)
        }
 #else
        for (n = 0; n < ifconf.ifc_len; n += sizeof(struct ifreq)) {
-               ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT, 0);
+               ifp = if_get_by_name(ifreq->ifr_name, VRF_DEFAULT);
                if_add_update(ifp);
                ifreq++;
        }
@@ -175,13 +180,15 @@ static int if_getaddrs(void)
 
        ret = getifaddrs(&ifap);
        if (ret != 0) {
-               zlog_err("getifaddrs(): %s", safe_strerror(errno));
+               flog_err_sys(EC_LIB_SYSTEM_CALL, "getifaddrs(): %s",
+                            safe_strerror(errno));
                return -1;
        }
 
        for (ifapfree = ifap; ifap; ifap = ifap->ifa_next) {
                if (ifap->ifa_addr == NULL) {
-                       zlog_err(
+                       flog_err(
+                               EC_LIB_INTERFACE,
                                "%s: nonsensical ifaddr with NULL ifa_addr, ifname %s",
                                __func__,
                                (ifap->ifa_name ? ifap->ifa_name : "(null)"));
@@ -190,7 +197,8 @@ static int if_getaddrs(void)
 
                ifp = if_lookup_by_name(ifap->ifa_name, VRF_DEFAULT);
                if (ifp == NULL) {
-                       zlog_err("if_getaddrs(): Can't lookup interface %s\n",
+                       flog_err(EC_LIB_INTERFACE,
+                                "if_getaddrs(): Can't lookup interface %s\n",
                                 ifap->ifa_name);
                        continue;
                }
@@ -249,7 +257,7 @@ static int if_getaddrs(void)
                        }
 #endif
 
-                       connected_add_ipv6(ifp, flags, &addr->sin6_addr,
+                       connected_add_ipv6(ifp, flags, &addr->sin6_addr, NULL,
                                           prefixlen, NULL);
                }
        }