]> git.proxmox.com Git - mirror_frr.git/commitdiff
* ripng_zebra.c, ripngd.[ch]: Pass metric info to the zebra daemon.
authorhasso <hasso>
Sat, 27 Aug 2005 06:19:39 +0000 (06:19 +0000)
committerhasso <hasso>
Sat, 27 Aug 2005 06:19:39 +0000 (06:19 +0000)
Forwardport from stable branch.

ripngd/ChangeLog
ripngd/ripng_zebra.c
ripngd/ripngd.c
ripngd/ripngd.h

index 8f874e0eede6cc899b2b8674601539a97a79bc9e..84c3ea0a1157b680591100ed117dd363b14b1a51 100644 (file)
@@ -1,3 +1,7 @@
+2005-08-27 Hasso Tepper <hasso at quagga.net>
+
+       * ripng_zebra.c, ripngd.[ch]: Pass metric info to the zebra daemon.
+
 2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
        * ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
index 51e73a0100bfa6166e029c90bb0239ff223e940d..7744fd557e718edd163507cfeefab86454e889bb 100644 (file)
@@ -44,7 +44,7 @@ int ripng_interface_address_delete (int, struct zclient *, zebra_size_t);
 \f
 void
 ripng_zebra_ipv6_add (struct prefix_ipv6 *p, struct in6_addr *nexthop,
-                     unsigned int ifindex)
+                     unsigned int ifindex, u_char metric)
 {
   struct zapi_ipv6 api;
 
@@ -59,7 +59,9 @@ ripng_zebra_ipv6_add (struct prefix_ipv6 *p, struct in6_addr *nexthop,
       SET_FLAG (api.message, ZAPI_MESSAGE_IFINDEX);
       api.ifindex_num = 1;
       api.ifindex = &ifindex;
-
+      SET_FLAG (api.message, ZAPI_MESSAGE_METRIC);
+      api.metric = metric;
+      
       zapi_ipv6_route (ZEBRA_IPV6_ROUTE_ADD, zclient, p, &api);
     }
 }
index 453637c31edb44ce5bf78641b186095bf2441564..cf0d5784bed1bcc2898acb201ab3fe2f8c678dd1 100644 (file)
@@ -783,7 +783,8 @@ ripng_route_process (struct rte *rte, struct sockaddr_in6 *from,
          rinfo->type = ZEBRA_ROUTE_RIPNG;
          rinfo->sub_type = RIPNG_ROUTE_RTE;
 
-         ripng_zebra_ipv6_add (&p, &rinfo->nexthop, rinfo->ifindex);
+         ripng_zebra_ipv6_add (&p, &rinfo->nexthop, rinfo->ifindex,
+                               rinfo->metric);
          rinfo->flags |= RIPNG_RTF_FIB;
 
          /* Aggregate check. */
@@ -835,9 +836,9 @@ ripng_route_process (struct rte *rte, struct sockaddr_in6 *from,
              RIPNG_TIMER_OFF (rinfo->t_garbage_collect);
 
              if (! IPV6_ADDR_SAME (&rinfo->nexthop, nexthop))
-           IPV6_ADDR_COPY (&rinfo->nexthop, nexthop);
+               IPV6_ADDR_COPY (&rinfo->nexthop, nexthop);
 
-             ripng_zebra_ipv6_add (&p, nexthop, ifp->ifindex);
+             ripng_zebra_ipv6_add (&p, nexthop, ifp->ifindex, rinfo->metric);
              rinfo->flags |= RIPNG_RTF_FIB;
 
              /* The aggregation counter needs to be updated because
@@ -850,7 +851,7 @@ ripng_route_process (struct rte *rte, struct sockaddr_in6 *from,
          if (oldmetric != RIPNG_METRIC_INFINITY)
            {
              ripng_zebra_ipv6_delete (&p, &rinfo->nexthop, rinfo->ifindex);
-             ripng_zebra_ipv6_add (&p, nexthop, ifp->ifindex);
+             ripng_zebra_ipv6_add (&p, nexthop, ifp->ifindex, rinfo->metric);
              rinfo->flags |= RIPNG_RTF_FIB;
 
              if (! IPV6_ADDR_SAME (&rinfo->nexthop, nexthop))
index 68da71dac9b07752c28d1761d24bd32c4189c0db..b478e9bc3604e9665c596cdcb0af69753024313c 100644 (file)
@@ -383,7 +383,7 @@ void ripng_redistribute_withdraw (int type);
 void ripng_distribute_update_interface (struct interface *);
 void ripng_if_rmap_update_interface (struct interface *);
 
-void ripng_zebra_ipv6_add (struct prefix_ipv6 *p, struct in6_addr *nexthop, unsigned int ifindex);
+void ripng_zebra_ipv6_add (struct prefix_ipv6 *p, struct in6_addr *nexthop, unsigned int ifindex, u_char metric);
 void ripng_zebra_ipv6_delete (struct prefix_ipv6 *p, struct in6_addr *nexthop, unsigned int ifindex);
 
 void ripng_redistribute_clean ();