]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/rtread_getmsg.c
lib: enforce vrf_name_to_id by returning default_vrf when name is null
[mirror_frr.git] / zebra / rtread_getmsg.c
index 39ecdb335c60da5c287659ea2a85d8ef33321781..c1bd68f9dc6ca43c9f40576ff49b8342e315c9cc 100644 (file)
 #include "if.h"
 #include "vrf.h"
 #include "vty.h"
+#include "lib_errors.h"
 
 #include "zebra/rib.h"
 #include "zebra/rt.h"
+#include "zebra/zebra_pbr.h"
+#include "zebra/zebra_errors.h"
 
 /* Thank you, Solaris, for polluting application symbol namespace. */
 #undef hook_register
@@ -77,7 +80,7 @@ static void handle_route_entry(mib2_ipRouteEntry_t *routeEntry)
        struct prefix prefix;
        struct in_addr tmpaddr;
        struct nexthop nh;
-       u_char zebra_flags = 0;
+       uint8_t zebra_flags = 0;
 
        if (routeEntry->ipRouteInfo.re_ire_type & IRE_CACHETABLE)
                return;
@@ -94,11 +97,12 @@ static void handle_route_entry(mib2_ipRouteEntry_t *routeEntry)
        prefix.prefixlen = ip_masklen(tmpaddr);
 
        memset(&nh, 0, sizeof(nh));
+       nh.vrf_id = VRF_DEFAULT;
        nh.type = NEXTHOP_TYPE_IPV4;
        nh.gate.ipv4.s_addr = routeEntry->ipRouteNextHop;
 
        rib_add(AFI_IP, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL, 0,
-               zebra_flags, &prefix, NULL, &nh, 0, 0, 0, 0);
+               zebra_flags, &prefix, NULL, &nh, 0, 0, 0, 0, 0);
 }
 
 void route_read(struct zebra_ns *zns)
@@ -117,8 +121,8 @@ void route_read(struct zebra_ns *zns)
        int flags, dev, retval, process;
 
        if ((dev = open(_PATH_GETMSG_ROUTE, O_RDWR)) == -1) {
-               zlog_warn("can't open %s: %s", _PATH_GETMSG_ROUTE,
-                         safe_strerror(errno));
+               flog_err_sys(EC_LIB_SYSTEM_CALL, "can't open %s: %s",
+                            _PATH_GETMSG_ROUTE, safe_strerror(errno));
                return;
        }
 
@@ -139,7 +143,8 @@ void route_read(struct zebra_ns *zns)
        flags = 0;
 
        if (putmsg(dev, &msgdata, NULL, flags) == -1) {
-               zlog_warn("putmsg failed: %s", safe_strerror(errno));
+               flog_err_sys(EC_LIB_SOCKET, "putmsg failed: %s",
+                            safe_strerror(errno));
                goto exit;
        }
 
@@ -151,8 +156,9 @@ void route_read(struct zebra_ns *zns)
                retval = getmsg(dev, &msgdata, NULL, &flags);
 
                if (retval == -1) {
-                       zlog_warn("getmsg(ctl) failed: %s",
-                                 safe_strerror(errno));
+                       flog_err_sys(EC_LIB_SYSTEM_CALL,
+                                    "getmsg(ctl) failed: %s",
+                                    safe_strerror(errno));
                        goto exit;
                }
 
@@ -165,10 +171,10 @@ void route_read(struct zebra_ns *zns)
 
                if ((size_t)msgdata.len >= sizeof(struct T_error_ack)
                    && TLIerr->PRIM_type == T_ERROR_ACK) {
-                       zlog_warn("getmsg(ctl) returned T_ERROR_ACK: %s",
-                                 safe_strerror((TLIerr->TLI_error == TSYSERR)
-                                                       ? TLIerr->UNIX_error
-                                                       : EPROTO));
+                       zlog_debug("getmsg(ctl) returned T_ERROR_ACK: %s",
+                                  safe_strerror((TLIerr->TLI_error == TSYSERR)
+                                                        ? TLIerr->UNIX_error
+                                                        : EPROTO));
                        break;
                }
 
@@ -180,7 +186,7 @@ void route_read(struct zebra_ns *zns)
                    || TLIack->PRIM_type != T_OPTMGMT_ACK
                    || TLIack->MGMT_flags != T_SUCCESS) {
                        errno = ENOMSG;
-                       zlog_warn("getmsg(ctl) returned bizarreness");
+                       zlog_debug("getmsg(ctl) returned bizarreness");
                        break;
                }
 
@@ -209,20 +215,21 @@ void route_read(struct zebra_ns *zns)
                        retval = getmsg(dev, NULL, &msgdata, &flags);
 
                        if (retval == -1) {
-                               zlog_warn("getmsg(data) failed: %s",
-                                         safe_strerror(errno));
+                               flog_err_sys(EC_LIB_SYSTEM_CALL,
+                                            "getmsg(data) failed: %s",
+                                            safe_strerror(errno));
                                goto exit;
                        }
 
                        if (!(retval == 0 || retval == MOREDATA)) {
-                               zlog_warn("getmsg(data) returned %d", retval);
+                               zlog_debug("getmsg(data) returned %d", retval);
                                goto exit;
                        }
 
                        if (process) {
                                if (msgdata.len % sizeof(mib2_ipRouteEntry_t)
                                    != 0) {
-                                       zlog_warn(
+                                       zlog_debug(
                                                "getmsg(data) returned "
                                                "msgdata.len = %d (%% sizeof (mib2_ipRouteEntry_t) != 0)",
                                                msgdata.len);
@@ -262,4 +269,8 @@ void neigh_read_for_vlan(struct zebra_ns *zns, struct interface *vlan_if)
 {
 }
 
+void kernel_read_pbr_rules(struct zebra_ns *zns)
+{
+}
+
 #endif /* SUNOS_5 */