]> git.proxmox.com Git - mirror_frr.git/blobdiff - zebra/kernel_socket.c
zebra: print unknown rule family as number
[mirror_frr.git] / zebra / kernel_socket.c
index 13d2185b0fa04dfb26fcc337b567fa48b7b4a655..c2812aa47b918a9277b88d86b3dc14aca24ac1ab 100644 (file)
@@ -304,12 +304,13 @@ size_t rta_getattr(caddr_t sap, void *destp, size_t destlen)
 size_t rta_getsdlname(caddr_t sap, void *destp, short *destlen)
 {
        struct sockaddr_dl *sdl = (struct sockaddr_dl *)sap;
-       struct sockaddr *sa = (struct sockaddr *)sap;
        uint8_t *dest = destp;
        size_t tlen, copylen;
 
        copylen = sdl->sdl_nlen;
 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
+       struct sockaddr *sa = (struct sockaddr *)sap;
+
        tlen = (sa->sa_len == 0) ? sizeof(ROUNDUP_TYPE) : ROUNDUP(sa->sa_len);
 #else  /* !HAVE_STRUCT_SOCKADDR_SA_LEN */
        tlen = SAROUNDUP(sap);
@@ -522,7 +523,7 @@ static enum zebra_link_type sdl_to_zebra_link_type(unsigned int sdlt)
 int ifm_read(struct if_msghdr *ifm)
 {
        struct interface *ifp = NULL;
-       struct sockaddr_dl *sdl;
+       struct sockaddr_dl *sdl = NULL;
        char ifname[IFNAMSIZ];
        short ifnlen = 0;
        int maskbit;
@@ -642,7 +643,7 @@ int ifm_read(struct if_msghdr *ifm)
                if (ifp == NULL) {
                        /* Interface that zebra was not previously aware of, so
                         * create. */
-                       ifp = if_create(ifname, VRF_DEFAULT);
+                       ifp = if_create_name(ifname, VRF_DEFAULT);
                        if (IS_ZEBRA_DEBUG_KERNEL)
                                zlog_debug("%s: creating ifp for ifindex %d",
                                           __func__, ifm->ifm_index);
@@ -1138,14 +1139,17 @@ void rtm_read(struct rt_msghdr *rtm)
         */
        if (rtm->rtm_type == RTM_CHANGE)
                rib_delete(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL,
-                          0, zebra_flags, &p, NULL, NULL, 0, 0, 0, true);
+                          0, zebra_flags, &p, NULL, NULL, 0, RT_TABLE_MAIN, 0,
+                          0, true);
        if (rtm->rtm_type == RTM_GET || rtm->rtm_type == RTM_ADD
            || rtm->rtm_type == RTM_CHANGE)
                rib_add(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL, 0,
-                       zebra_flags, &p, NULL, &nh, 0, 0, 0, 0, 0);
+                       zebra_flags, &p, NULL, &nh, 0, RT_TABLE_MAIN,
+                       0, 0, 0, 0);
        else
                rib_delete(afi, SAFI_UNICAST, VRF_DEFAULT, ZEBRA_ROUTE_KERNEL,
-                          0, zebra_flags, &p, NULL, &nh, 0, 0, 0, true);
+                          0, zebra_flags, &p, NULL, &nh, 0, RT_TABLE_MAIN, 0,
+                          0, true);
 }
 
 /* Interface function for the kernel routing table updates.  Support
@@ -1423,7 +1427,7 @@ static int kernel_read(struct thread *thread)
 /* Make routing socket. */
 static void routing_socket(struct zebra_ns *zns)
 {
-       frr_elevate_privs(&zserv_privs) {
+       frr_with_privs(&zserv_privs) {
                routing_sock = ns_socket(AF_ROUTE, SOCK_RAW, 0, zns->ns_id);
 
                dplane_routing_sock =