summaryrefslogtreecommitdiff
path: root/bgpd/bgp_route.c
diff options
context:
space:
mode:
authorpaul <paul>2003-08-12 05:32:27 +0000
committerpaul <paul>2003-08-12 05:32:27 +0000
commitac41b2a2d40356468edc84becc6d5800d119aef6 (patch)
tree8496bdd89af283f76ccd25b5ff24febcdcd93e0e /bgpd/bgp_route.c
parentf1c61a0a5b5c4cfd0125f050568b8c1fb9953a96 (diff)
2003-08-11 kunihiro <kunihiro@zebra.org
* bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with ability to specify 'peer-address' rather than IP.
Diffstat (limited to 'bgpd/bgp_route.c')
-rw-r--r--bgpd/bgp_route.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 8ca1ac8a..bb6b1b18 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -437,8 +437,13 @@ bgp_input_modifier (struct peer *peer, struct prefix *p, struct attr *attr,
info.peer = peer;
info.attr = attr;
+ SET_FLAG (peer->rmap_type, PEER_RMAP_TYPE_IN);
+
/* Apply BGP route map to the attribute. */
ret = route_map_apply (ROUTE_MAP_IN (filter), p, RMAP_BGP, &info);
+
+ peer->rmap_type = 0;
+
if (ret == RMAP_DENYMATCH)
{
/* Free newly generated AS path and community by route-map. */
@@ -702,12 +707,16 @@ bgp_announce_check (struct bgp_info *ri, struct peer *peer, struct prefix *p,
dummy_attr = *attr;
info.attr = &dummy_attr;
}
-
+
+ SET_FLAG (peer->rmap_type, PEER_RMAP_TYPE_OUT);
+
if (ri->suppress)
ret = route_map_apply (UNSUPPRESS_MAP (filter), p, RMAP_BGP, &info);
else
ret = route_map_apply (ROUTE_MAP_OUT (filter), p, RMAP_BGP, &info);
+ peer->rmap_type = 0;
+
if (ret == RMAP_DENYMATCH)
{
bgp_attr_flush (attr);