From fee0f4c629412f422fc9a857e097ef335c2c576c Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 13 Sep 2004 05:12:46 +0000 Subject: 2004-09-13 Jose Luis Rubio (at Technical University of Madrid as part of Euro6ix Project) Enhanced Route Server functionality and Route-Maps: * bgpd/bgpd.h: Modified 'struct peer' and 'struct bgp_filter' to support rs-clients. A 'struct bgp_table *rib' has been added to the first (to mantain a separated RIB for each rs-client) and two new route-maps have been added to the last (for import/export policies). Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX}, PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT. * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in order to consider the new fields included in 'struct peer' for supporting rs-clients, i.e. the import/export route-maps and the 'struct bgp_table'. * bgpd/bgp_route.{ch}: Modified several functions related with receiving/sending announces in order to support the new Route Server capabilities. Function 'bgp_process' has been reorganized, creating an auxiliar function for best path selection ('bgp_best_selection'). Modified 'bgp_show' and 'bgp_show_route' for displaying information about any RIB (and not only the main bgp RIB). Added commands for displaying information about RS-clients RIBs: 'show bgp rsclient (A.B.C.D|X:X::X:X)', 'show bgp rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M', etc * bgpd/bgp_table.{ch}: The structure 'struct bgp_table' now has two new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT}) and 'void *owner' which points to 'struct bgp' or 'struct peer' which owns the table. When creating a new bgp_table by default 'type=BGP_TABLE_MAIN' is set. * bgpd/bgp_vty.c: The commands 'neighbor ... route-server-client' and 'no neighbor ... route-server-client' now not only set/unset the flag PEER_FLAG_RSERVER_CLIENT, but they create/destroy the 'struct bgp_table' of the peer. Special actions are taken for peer_groups. Command 'neighbor ... route-map WORD (in|out)' now also supports two new kinds of route-map: 'import' and 'export'. Added commands 'clear bgp * rsclient', etc. These commands allow a new kind of soft_reconfig which affects only the RIB of the specified RS-client. Added commands 'show bgp rsclient summary', etc which display a summary of the rs-clients configured for the corresponding address family. * bgpd/bgp_routemap.c: A new match statement is available, 'match peer (A.B.C.D|X:X::X:X)'. This statement can only be used in import/export route-maps, and it matches when the peer who announces (when used in an import route-map) or is going to receive (when used in an export route-map) the route is the same than the one specified in the statement. For peer-groups the statement matches if the specified peer is member of the peer-group. A special version of the command, 'match peer local', matches with routes originated by the Route Server (defined with 'network ...', redistributed routes and default-originate). * lib/routemap.{ch}: Added a new clause 'call NAME' for use in route-maps. It jumps into the specified route-map and when it returns the first route-map ends if the called RM returns DENY_MATCH, or continues in other case. --- ChangeLog | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index 68186fdb..d6a0ab4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,67 @@ +2004-09-13 Jose Luis Rubio + (at Technical University of Madrid as part of Euro6ix Project) + + Enhanced Route Server functionality and Route-Maps: + + * bgpd/bgpd.h: Modified 'struct peer' and 'struct bgp_filter' to + support rs-clients. A 'struct bgp_table *rib' has been added to the + first (to mantain a separated RIB for each rs-client) and two new + route-maps have been added to the last (for import/export policies). + Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX}, + PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT. + + * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in + order to consider the new fields included in 'struct peer' for + supporting rs-clients, i.e. the import/export route-maps and the + 'struct bgp_table'. + + * bgpd/bgp_route.{ch}: Modified several functions related with + receiving/sending announces in order to support the new Route Server + capabilities. + Function 'bgp_process' has been reorganized, creating an auxiliar + function for best path selection ('bgp_best_selection'). + Modified 'bgp_show' and 'bgp_show_route' for displaying information + about any RIB (and not only the main bgp RIB). + Added commands for displaying information about RS-clients RIBs: + 'show bgp rsclient (A.B.C.D|X:X::X:X)', 'show bgp rsclient + (A.B.C.D|X:X::X:X) X:X::X:X/M', etc + + * bgpd/bgp_table.{ch}: The structure 'struct bgp_table' now has two + new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT}) + and 'void *owner' which points to 'struct bgp' or 'struct peer' which + owns the table. + When creating a new bgp_table by default 'type=BGP_TABLE_MAIN' is set. + + * bgpd/bgp_vty.c: The commands 'neighbor ... route-server-client' and + 'no neighbor ... route-server-client' now not only set/unset the flag + PEER_FLAG_RSERVER_CLIENT, but they create/destroy the 'struct + bgp_table' of the peer. Special actions are taken for peer_groups. + Command 'neighbor ... route-map WORD (in|out)' now also supports two + new kinds of route-map: 'import' and 'export'. + Added commands 'clear bgp * rsclient', etc. These commands allow a new + kind of soft_reconfig which affects only the RIB of the specified + RS-client. + Added commands 'show bgp rsclient summary', etc which display a + summary of the rs-clients configured for the corresponding address + family. + + * bgpd/bgp_routemap.c: A new match statement is available, + 'match peer (A.B.C.D|X:X::X:X)'. This statement can only be used in + import/export route-maps, and it matches when the peer who announces + (when used in an import route-map) or is going to receive (when used + in an export route-map) the route is the same than the one specified + in the statement. + For peer-groups the statement matches if the specified peer is member + of the peer-group. + A special version of the command, 'match peer local', matches with + routes originated by the Route Server (defined with 'network ...', + redistributed routes and default-originate). + + * lib/routemap.{ch}: Added a new clause 'call NAME' for use in + route-maps. It jumps into the specified route-map and when it returns + the first route-map ends if the called RM returns DENY_MATCH, or + continues in other case. + 2004-08-31 Greg Troxel * Makefile.am: make m4 as subdir, rather the EXTRA_DISTing it -- cgit v1.2.1