]> git.proxmox.com Git - mirror_frr.git/commitdiff
[zebra] Record NEWADDR metric on PF_ROUTE, print CACHEINFO debug on netlink
authorpaul <paul>
Tue, 17 Jan 2006 18:03:04 +0000 (18:03 +0000)
committerpaul <paul>
Tue, 17 Jan 2006 18:03:04 +0000 (18:03 +0000)
2006-01-17 Paul Jakma <paul.jakma@sun.com>

* kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.
  If interface is an alias, pass the alias as a label for
  connected_add_ipv{4,6}.
* rt_netlink.c: (netlink_interface_addr) print out
  IFA_CACHEINFO info, if present, when debugging kernel
  messages.

zebra/ChangeLog
zebra/kernel_socket.c
zebra/rt_netlink.c

index 169f0a63adca74c13f8e4fe8e77b013af62a775c..a40d3e93f8439628b97d19b58eec58a7f0beb816 100644 (file)
@@ -1,3 +1,12 @@
+2006-01-17 Paul Jakma <paul.jakma@sun.com>
+
+       * kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.
+         If interface is an alias, pass the alias as a label for
+         connected_add_ipv{4,6}.
+       * rt_netlink.c: (netlink_interface_addr) print out
+         IFA_CACHEINFO info, if present, when debugging kernel
+         messages.
+
 2006-01-17 Gunnar Stigen <gunnar.stigen@axxessit.no>
 
        * connected.c: (connected_up_ipv{4,6}) Include interface metric on
index c4c1f2c62c65506ac442fbe4d88fee7773959af8..ae19ef8fec940041bcd44f9e5aa089bc04257a1f 100644 (file)
@@ -544,6 +544,8 @@ ifam_read (struct ifa_msghdr *ifam)
   if (ifnlen && strncmp (ifp->name, ifname, INTERFACE_NAMSIZ))
     isalias = 1;
   
+  ifp->metric = ifam->ifam_metric;
+  
   /* Check interface flag for implicit up of the interface. */
   if_refresh (ifp);
 
@@ -554,7 +556,8 @@ ifam_read (struct ifa_msghdr *ifam)
       if (ifam->ifam_type == RTM_NEWADDR)
        connected_add_ipv4 (ifp, 0, &addr.sin.sin_addr, 
                            ip_masklen (mask.sin.sin_addr),
-                           &brd.sin.sin_addr, NULL);
+                           &brd.sin.sin_addr,
+                           (isalias ? ifname : NULL));
       else
        connected_delete_ipv4 (ifp, 0, &addr.sin.sin_addr, 
                               ip_masklen (mask.sin.sin_addr),
@@ -571,7 +574,8 @@ ifam_read (struct ifa_msghdr *ifam)
        connected_add_ipv6 (ifp,
                            &addr.sin6.sin6_addr, 
                            ip6_masklen (mask.sin6.sin6_addr),
-                           &brd.sin6.sin6_addr, NULL);
+                           &brd.sin6.sin6_addr,
+                           (isalias ? ifname : NULL));
       else
        connected_delete_ipv6 (ifp,
                               &addr.sin6.sin6_addr, 
index 6e91408754f1e59f1140b42c27ba8a5ad7c95216..f1c1a300b8004981cb631fe4782c05d03f0d4fe7 100644 (file)
@@ -628,6 +628,13 @@ netlink_interface_addr (struct sockaddr_nl *snl, struct nlmsghdr *h)
                               buf, BUFSIZ), ifa->ifa_prefixlen);
       if (tb[IFA_LABEL] && strcmp (ifp->name, RTA_DATA (tb[IFA_LABEL])))
         zlog_debug ("  IFA_LABEL     %s", (char *)RTA_DATA (tb[IFA_LABEL]));
+      
+      if (tb[IFA_CACHEINFO])
+        {
+          struct ifa_cacheinfo *ci = RTA_DATA (tb[IFA_CACHEINFO]);
+          zlog_debug ("  IFA_CACHEINFO pref %d, valid %d",
+                      ci->ifa_prefered, ci->ifa_valid);
+        }
     }
   
   if (tb[IFA_ADDRESS] == NULL)