summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpaul <paul>2003-02-07 14:29:19 +0000
committerpaul <paul>2003-02-07 14:29:19 +0000
commitd71717f92ca1892f7b30b553c4ab588e0095c5c7 (patch)
tree660579dbe185bfe07985646045951aac3005ce22
parent87e7bd70819e712e26f60c430627b7b04cdd7949 (diff)
downloadquagga-zebra_org_20030207.tar.bz2
quagga-zebra_org_20030207.tar.xz
Import of Zebra CVS 20030207-14:26zebra_org_20030207
-rw-r--r--bgpd/bgp_route.c4
-rw-r--r--bgpd/bgpd.c7
-rw-r--r--zebra/ChangeLog5
-rw-r--r--zebra/Makefile.in4
-rw-r--r--zebra/rt_netlink.c4
5 files changed, 20 insertions, 4 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 87d305cb..58d97b0f 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -2859,7 +2859,7 @@ bgp_aggregate_increment (struct bgp *bgp, struct prefix *p,
if ((aggregate = rn->info) != NULL && rn->p.prefixlen < p->prefixlen)
{
bgp_aggregate_delete (bgp, &rn->p, afi, safi, aggregate);
- bgp_aggregate_route (bgp, &rn->p, ri, safi, safi, NULL, aggregate);
+ bgp_aggregate_route (bgp, &rn->p, ri, afi, safi, NULL, aggregate);
}
bgp_unlock_node (child);
}
@@ -2886,7 +2886,7 @@ bgp_aggregate_decrement (struct bgp *bgp, struct prefix *p,
if ((aggregate = rn->info) != NULL && rn->p.prefixlen < p->prefixlen)
{
bgp_aggregate_delete (bgp, &rn->p, afi, safi, aggregate);
- bgp_aggregate_route (bgp, &rn->p, NULL, safi, safi, del, aggregate);
+ bgp_aggregate_route (bgp, &rn->p, NULL, afi, safi, del, aggregate);
}
bgp_unlock_node (child);
}
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index f116a0cf..53263637 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -797,6 +797,13 @@ peer_as_change (struct peer *peer, as_t as)
type = peer_sort (peer);
peer->as = as;
+ if (bgp_config_check (peer->bgp, BGP_CONFIG_CONFEDERATION)
+ && ! bgp_confederation_peers_check (peer->bgp, as)
+ && peer->bgp->as != as)
+ peer->local_as = peer->bgp->confed_id;
+ else
+ peer->local_as = peer->bgp->as;
+
/* Advertisement-interval reset */
if (peer_sort (peer) == BGP_PEER_IBGP)
peer->v_routeadv = BGP_DEFAULT_IBGP_ROUTEADV;
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index b5383f1d..1f392197 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,8 @@
+2003-02-06 Francois Deppierraz <francois@ctrlaltdel.ch>
+
+ * rt_netlink.c (netlink_route_multipath): Set RTM_F_EQUALIZE when
+ it exists.
+
2002-09-28 Akihiro Mizutani <mizutani@net-chef.net>
* zebra_rib.c (static_add_ipv4): Null0 static route is added.
diff --git a/zebra/Makefile.in b/zebra/Makefile.in
index 60dd1989..620fada4 100644
--- a/zebra/Makefile.in
+++ b/zebra/Makefile.in
@@ -125,7 +125,7 @@ zebra_SOURCES = \
noinst_HEADERS = \
connected.h ioctl.h rib.h rt.h zserv.h redistribute.h debug.h rtadv.h \
- interface.h ipforward.h irdp.h
+ interface.h ipforward.h
zebra_LDADD = ../lib/libzebra.a $(otherobj) $(LIB_IPV6)
@@ -139,7 +139,7 @@ EXTRA_DIST = $(sysconf_DATA) if_ioctl.c if_netlink.c if_proc.c if_sysctl.c \
ipforward_solaris.c ipforward_sysctl.c rt_ioctl.c rt_netlink.c \
rt_socket.c rtread_netlink.c rtread_proc.c rtread_sysctl.c \
rtread_getmsg.c kernel_socket.c kernel_netlink.c mtu_kvm.c \
- GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB irdp.c
+ GNOME-SMI GNOME-PRODUCT-ZEBRA-MIB
subdir = zebra
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index baca1751..7a8073c2 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1145,6 +1145,10 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib,
req.r.rtm_table = rib->table;
req.r.rtm_dst_len = p->prefixlen;
+#ifdef RTM_F_EQUALIZE
+ req.r.rtm_flags |= RTM_F_EQUALIZE;
+#endif /* RTM_F_EQUALIZE */
+
if (rib->flags & ZEBRA_FLAG_BLACKHOLE)
discard = 1;
else