From: Timo Teräs Date: Tue, 20 May 2014 06:04:49 +0000 (+0300) Subject: bgpd: route-map: share aspath object compilation code where possible X-Git-Url: http://git.ozo.com/?p=quagga%2F.git;a=commitdiff_plain;h=b304dcb8abc4e5b93f86a4024990980746e730be bgpd: route-map: share aspath object compilation code where possible Signed-off-by: Timo Teräs --- --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -101,6 +101,26 @@ o Local extention */ + /* generic as path object to be shared in multiple rules */ + +static void * +route_aspath_compile (const char *arg) +{ + struct aspath *aspath; + + aspath = aspath_str2aspath (arg); + if (! aspath) + return NULL; + return aspath; +} + +static void +route_aspath_free (void *rule) +{ + struct aspath *aspath = rule; + aspath_free (aspath); +} + /* 'match peer (A.B.C.D|X:X::X:X)' */ /* Compares the peer specified in the 'match peer' clause with the peer @@ -1228,33 +1248,13 @@ route_set_aspath_prepend (void *rule, st return RMAP_OKAY; } -/* Compile function for as-path prepend. */ -static void * -route_set_aspath_prepend_compile (const char *arg) -{ - struct aspath *aspath; - - aspath = aspath_str2aspath (arg); - if (! aspath) - return NULL; - return aspath; -} - -/* Compile function for as-path prepend. */ -static void -route_set_aspath_prepend_free (void *rule) -{ - struct aspath *aspath = rule; - aspath_free (aspath); -} - /* Set metric rule structure. */ struct route_map_rule_cmd route_set_aspath_prepend_cmd = { "as-path prepend", route_set_aspath_prepend, - route_set_aspath_prepend_compile, - route_set_aspath_prepend_free, + route_aspath_compile, + route_aspath_free, }; /* `set as-path exclude ASn' */ @@ -1282,37 +1282,13 @@ route_set_aspath_exclude (void *rule, st return RMAP_OKAY; } -/* FIXME: consider using route_set_aspath_prepend_compile() and - * route_set_aspath_prepend_free(), which two below function are - * exact clones of. - */ - -/* Compile function for as-path exclude. */ -static void * -route_set_aspath_exclude_compile (const char *arg) -{ - struct aspath *aspath; - - aspath = aspath_str2aspath (arg); - if (! aspath) - return NULL; - return aspath; -} - -static void -route_set_aspath_exclude_free (void *rule) -{ - struct aspath *aspath = rule; - aspath_free (aspath); -} - /* Set ASn exlude rule structure. */ struct route_map_rule_cmd route_set_aspath_exclude_cmd = { "as-path exclude", route_set_aspath_exclude, - route_set_aspath_exclude_compile, - route_set_aspath_exclude_free, + route_aspath_compile, + route_aspath_free, }; /* `set community COMMUNITY' */