]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/kernel_netlink.c
pimd: Add missing yang callbacks for route-maps
[mirror_frr.git] / zebra / kernel_netlink.c
index 23f1a3bf86ca61a5cbca8a26735dade8f6f7a1ff..90d3aeb482d9c4fe8b912380acf911b916c7ed10 100644 (file)
@@ -290,6 +290,18 @@ static int netlink_information_fetch(struct nlmsghdr *h, ns_id_t ns_id,
                return netlink_neigh_change(h, ns_id);
        case RTM_DELNEIGH:
                return netlink_neigh_change(h, ns_id);
+       case RTM_GETNEIGH:
+               /*
+                * Kernel in some situations when it expects
+                * user space to resolve arp entries, we will
+                * receive this notification.  As we don't
+                * need this notification and as that
+                * we don't want to spam the log file with
+                * below messages, just ignore.
+                */
+               if (IS_ZEBRA_DEBUG_KERNEL)
+                       zlog_debug("Received RTM_GETNEIGH, ignoring");
+               break;
        case RTM_NEWRULE:
                return netlink_rule_change(h, ns_id, startup);
        case RTM_DELRULE:
@@ -580,6 +592,7 @@ struct rtattr *addattr_nest(struct nlmsghdr *n, int maxlen, int type)
        struct rtattr *nest = NLMSG_TAIL(n);
 
        addattr_l(n, maxlen, type, NULL, 0);
+       nest->rta_type |= NLA_F_NESTED;
        return nest;
 }
 
@@ -594,6 +607,7 @@ struct rtattr *rta_nest(struct rtattr *rta, int maxlen, int type)
        struct rtattr *nest = RTA_TAIL(rta);
 
        rta_addattr_l(rta, maxlen, type, NULL, 0);
+       nest->rta_type |= NLA_F_NESTED;
        return nest;
 }
 
@@ -1086,7 +1100,7 @@ int netlink_request(struct nlsock *nl, struct nlmsghdr *n)
    netlink_socket (). */
 void kernel_init(struct zebra_ns *zns)
 {
-       unsigned long groups;
+       uint32_t groups;
 #if defined SOL_NETLINK
        int one, ret;
 #endif
@@ -1107,9 +1121,9 @@ void kernel_init(struct zebra_ns *zns)
                RTMGRP_IPV6_IFADDR             |
                RTMGRP_IPV4_MROUTE             |
                RTMGRP_NEIGH                   |
-               (1 << (RTNLGRP_IPV4_RULE - 1)) |
-               (1 << (RTNLGRP_IPV6_RULE - 1)) |
-               (1 << (RTNLGRP_NEXTHOP - 1));
+               ((uint32_t) 1 << (RTNLGRP_IPV4_RULE - 1)) |
+               ((uint32_t) 1 << (RTNLGRP_IPV6_RULE - 1)) |
+               ((uint32_t) 1 << (RTNLGRP_NEXTHOP - 1));
 
        snprintf(zns->netlink.name, sizeof(zns->netlink.name),
                 "netlink-listen (NS %u)", zns->ns_id);