@node Route Map @chapter Route Map Route maps provide a means to both filter and/or apply actions to route, hence allowing policy to be applied to routes. @menu * Route Map Command:: * Route Map Match Command:: * Route Map Set Command:: * Route Map Call Command:: * Route Map Exit Action Command:: * Route Map Examples:: @end menu Route-maps are an ordered list of route-map entries. Each entry may specify up to four distincts sets of clauses: @table @samp @item Matching Policy This specifies the policy implied if the @samp{Matching Conditions} are met or not met, and which actions of the route-map are to be taken, if any. The two possibilities are: @itemize @minus @item @samp{permit}: If the entry matches, then carry out the @samp{Set Actions}. Then finish processing the route-map, permitting the route, unless an @samp{Exit Action} indicates otherwise. @item @samp{deny}: If the entry matches, then finish processing the route-map and deny the route (return @samp{deny}). @end itemize The @samp{Matching Policy} is specified as part of the command which defines the ordered entry in the route-map. See below. @item Matching Conditions A route-map entry may, optionally, specify one or more conditions which must be matched if the entry is to be considered further, as governed by the Match Policy. If a route-map entry does not explicitely specify any matching conditions, then it always matches. @item Set Actions A route-map entry may, optionally, specify one or more @samp{Set Actions} to set or modify attributes of the route. @item Call Action Call to another route-map, after any @samp{Set Actions} have been carried out. If the route-map called returns @samp{deny} then processing of the route-map finishes and the route is denied, regardless of the @samp{Matching Policy} or the @samp{Exit Policy}. If the called route-map returns @samp{permit}, then @samp{Matching Policy} and @samp{Exit Policy} govern further behaviour, as normal. @item Exit Policy An entry may, optionally, specify an alternative @samp{Exit Policy} to take if the entry matched, rather than the normal policy of exiting the route-map and permitting the route. The two possibilities are: @itemize @minus @item @samp{next}: Continue on with processing of the route-map entries. @item @samp{goto N}: Jump ahead to the first route-map entry whose order in the route-map is >= N. Jumping to a previous entry is not permitted. @end itemize @end table The default action of a route-map, if no entries match, is to deny. I.e. a route-map essentially has as its last entry an empty @samp{deny} entry, which matches all routes. To change this behaviour, one must specify an empty @samp{permit} entry as the last entry in the route-map. To summarise the above: @multitable {permit} {action} {No Match} @headitem @tab Match @tab No Match @item @emph{Permit} @tab action @tab cont @item @emph{Deny} @tab deny @tab cont @end multitable @table @samp @item action @itemize @minus @item Apply @emph{set} statements @item If @emph{call} is present, call given route-map. If that returns a @samp{deny}, finish processing and return @samp{deny}. @item If @samp{Exit Policy} is @emph{next}, goto next route-map entry @item If @samp{Exit Policy} is @emph{goto}, goto first entry whose order in the list is >= the given order. @item Finish processing the route-map and permit the route. @end itemize @item deny @itemize @minus @item The route is denied by the route-map (return @samp{deny}). @end itemize @item cont @itemize @minus @item goto next route-map entry @end itemize @end table @node Route Map Command @section Route Map Command @deffn {Command} {route-map @var{route-map-name} (permit|deny) @var{order}} {} Configure the @var{order}'th entry in @var{route-map-name} with @samp{Match Policy} of either @emph{permit} or @emph{deny}. @end deffn @node Route Map Match Command @section Route Map Match Command @deffn {Route-map Command} {match ip address @var{access_list}} {} Matches the specified @var{access_list} @end deffn @deffn {Route-map Command} {match ip next-hop @var{ipv4_addr}} {} Matches the specified @var{ipv4_addr}. @end deffn @deffn {Route-map Command} {match aspath @var{as_path}} {} Matches the specified @var{as_path}. @end deffn @deffn {Route-map Command} {match metric @var{metric}} {} Matches the specified @var{metric}. @end deffn @deffn {Route-map Command} {match community @var{community_list}} {} Matches the specified @var{community_list} @end deffn @node Route Map Set Command @section Route Map Set Command @deffn {Route-map Command} {set ip next-hop @var{ipv4_address}} {} Set the BGP nexthop address. @end deffn @deffn {Route-map Command} {set local-preference @var{local_pref}} {} Set the BGP local preference. @end deffn @deffn {Route-map Command} {set weight @var{weight}} {} Set the route's weight. @end deffn @deffn {Route-map Command} {set metric @var{metric}} {} Set the BGP attribute MED. @end deffn @deffn {Route-map Command} {set as-path prepend @var{as_path}} {} Set the BGP AS path to prepend. @end deffn @deffn {Route-map Command} {set community @var{community}} {} Set the BGP community attribute. @end deffn @deffn {Route-map Command} {set ipv6 next-hop global @var{ipv6_address}} {} Set the BGP-4+ global IPv6 nexthop address. @end deffn @deffn {Route-map Command} {set ipv6 next-hop local @var{ipv6_address}} {} Set the BGP-4+ link local IPv6 nexthop address. @end deffn @node Route Map Call Command @section Route Map Call Command @deffn {Route-map Command} {call @var{name}} {} Call route-map @var{name}. If it returns deny, deny the route and finish processing the route-map. @end deffn @node Route Map Exit Action Command @section Route Map Exit Action Command @deffn {Route-map Command} {on-match next} {} @deffnx {Route-map Command} {continue} {} Proceed on to the next entry in the route-map. @end deffn @deffn {Route-map Command} {on-match goto @var{N}} {} @deffnx {Route-map Command} {continue @var{N}} {} Proceed processing the route-map at the first entry whose order is >= N @end deffn @node Route Map Examples @section Route Map Examples A simple example of a route-map: @example @group route-map test permit 10 match ip address 10 set local-preference 200 @end group @end example This means that if a route matches ip access-list number 10 it's local-preference value is set to 200. See @ref{BGP Configuration Examples} for examples of more sophisticated useage of route-maps, including of the @samp{call} action.