summaryrefslogtreecommitdiff
path: root/nest/attrs.h
AgeCommit message (Collapse)Author
2023-09-26Basic route aggregationIgor Putovny
Add a new protocol offering route aggregation. User can specify list of route attributes in the configuration file and run route aggregation on the export side of the pipe protocol. Routes are sorted and for every group of equivalent routes new route is created and exported to the routing table. It is also possible to specify filter which will run for every route before aggregation. Furthermore, it will be possible to set attributes of new routes according to attributes of the aggregated routes. This is a work in progress. Original work by Igor Putovny, subsequent cleanups and finalization by Maria Matejka.
2022-10-03Filter: Add some minor functions for f_tree and ECOndrej Zajicek
Add some supportive functions for f_tree and EC. These functions are used by L3VPN code.
2022-06-27Filter: Implement for loopsOndrej Zajicek (work)
For loops allow to iterate over elements in compound data like BGP paths or community lists. The syntax is: for [ <type> ] <variable> in <expr> do <command-body>
2022-06-27Nest: Cleanups in as_path_filter()Ondrej Zajicek (work)
Use struct f_val as a common argument for as_path_filter(), as suggested by Alexander Zubkov. That allows to use NULL sets as valid arguments.
2021-12-28Filter: Add operators to find minimum and maximum element of setsAlexander Zubkov
Add operators .min and .max to find minumum or maximum element in sets of types: clist, eclist, lclist. Example usage: bgp_community.min bgp_ext_community.max filter(bgp_large_community, [(as1, as2, *)]).min Signed-off-by: Alexander Zubkov <green@qrator.net>
2020-05-18Nest: Implement BGP path mask loop operatorOndrej Zajicek (work)
Implement regex-like '+' operator in BGP path masks to match previous path mask item multiple times. This is useful as ASNs may appear multiple times in paths due to path prepending for traffic engineering purposes.
2020-04-15BGP: Fix handling of 16bit-only ASN translationNasato Goto
The bug generated invalid AGGREGATOR attribute during translation of 32bit ASN to 16bit-only BGP peer. The patch fixes that.
2019-11-04BGP: Add option to reject AS_SETsOndrej Zajicek (work)
There is a pending draft to make them obsolete
2019-08-06Filter: Allow to use set constants / expressions in path masksOndrej Zajicek (work)
Allow to not only use set literals in path masks, but also existing set constants or set expressions.
2019-08-06Filter: Allow to use sets in path masksOndrej Zajicek (work)
2019-02-20Filter: Merged filter line item dumpers into common generated sourceMaria Matejka
2019-02-20Filter: refactoring of instruction constructorsMaria Matejka
2019-02-20Filter refactoring: dropped the recursion from the interpreterMaria Matejka
This is a major change of how the filters are interpreted. If everything works how it should, it should not affect you unless you are hacking the filters themselves. Anyway, this change should make a huge improvement in the filter performance as previous benchmarks showed that our major problem lies in the recursion itself. There are also some changes in nest and protocols, related mostly to spreading const declarations throughout the whole BIRD and also to refactored dynamic attribute definitions. The need of these came up during the whole work and it is too difficult to split out these not-so-related changes.
2017-12-13BGP: Fix non-transitive ext communitiesOndrej Zajicek (work)
2017-02-08Merge branch 'master' into int-newOndrej Zajicek (work)
2017-01-22BGP: Support for AS confederations (RFC 5065)Ondrej Zajicek (work)
2016-12-07BGP redesignOndrej Zajicek (work)
Integrated and extensible BGP with generalized AFI handling, support for IPv4+IPv6 AFI and unicast+multicast SAFI.
2016-11-15BGP: Cluster list item should be prependedOndrej Zajicek (work)
Commit 3c09af41... changed behavior of int_set_add() from prepend to append, which makes more sense for community list, but prepend must be used for cluster list. Add int_set_prepend() and use it in cluster list handling code.
2016-10-03BGP: Support for large communitiesOndrej Zajicek (work)
Add support for large communities (draft-ietf-idr-large-community), 96bit alternative to RFC 1997 communities. Thanks to Matt Griswold for the original patch.
2016-06-08Add AS# ranges to bgpmask.Ondrej Filip
2016-02-16Filter: Implement last_nonaggregated operator on bgp_pathOndrej Zajicek (work)
2015-06-08unsigned [int] -> uintPavel TvrdĂ­k
2013-10-21Implements 'allow local as' option.Ondrej Zajicek
Similar to allowas-in option on other routers.
2013-10-02Implements C.len operator for clist and eclist types.Ondrej Zajicek
Thanks to Sergey Popovich for the original patch.
2013-08-15Extends delete/filter operators to work no bgp_paths.Ondrej Zajicek
2013-07-09Implements 'bgppath ~ int set' filter op.Ondrej Zajicek
2012-03-15Extends set operations in filters.Ondrej Zajicek
Allows add/filter/delete clist on clist (set algebra on clists). Allows number ~ bgppath match.
2011-08-14BGP Extended communities.Ondrej Zajicek
2011-07-03Prints full community lists during 'show route all'.Ondrej Zajicek
2009-09-17Fixes headers for uintptr_t (and build on NetBSD).Ondrej Zajicek
2009-08-25Fixes bug related to AS2->AS4 conversion.Ondrej Zajicek
2009-06-01Adds support for dynamic pair and bgp mask expressions.Ondrej Zajicek
2009-04-17Rewrite of buggy AS path matching.Ondrej Zajicek
Old AS path maching supposes thath AS number appears only once in AS path, but that is not true. It also contains some bugs related to AS path sets. New code does not use any assumptions about semantic structure of AS path. It is asymptotically slower than the old code, but on real paths it is not significant. It also allows '?' for matching one arbitrary AS number.
2009-03-18Better handling of AS4 optional attribute errorsOndrej Zajicek
AS4 optional attribute errors were handled by session drop (according to BGP RFC). This patch implements error handling according to new BGP AS4 draft (*) - ignoring invalid AS4 optional attributes. (*) http://www.ietf.org/internet-drafts/draft-chen-rfc4893bis-02.txt
2008-11-08Proper format functions for ORIGINATOR_ID, CLUSTER_LISTOndrej Zajicek
2008-10-26Bugfixes in MULIT_EXIT_DISC attribute handling.Ondrej Zajicek
- Old MED handling was completely different from behavior specified in RFCs - for example they havn't been propagated to neighboring areas. - Update tie-breaking according to RFC 4271. - Change default value for 'default bgp_med' configuration option according to RFC 4271.
2008-10-26Implementation of route reflection for BGPOndrej Zajicek
2008-10-26Implementation of 4B ASN support for BGPOndrej Zajicek
2000-05-19Added as_path_get_first().Martin Mares
2000-04-17Don't import/export MED and LOCAL_PREF on external links.Martin Mares
Added real comparison of BGP routes (inspired by the Cisco one). Default local preference and default MED are now settable. Defined filter keywords for all BGP attributes we know.
2000-04-17Int sets moved to core. It is now possible to have variable of type clist.Pavel Machek
2000-04-17as_path_match moved to a-path.cPavel Machek
2000-04-17Path_getlen moved to nest and length was made callable from filters.Pavel Machek
2000-04-17Printing of AS paths and community sets.Martin Mares
2000-04-17Created nest/a-path.c and a-set.c which should contain general operationsMartin Mares
on AS paths and community sets. Moved as_path_prepend() there. Pavel, please move the other functions as well.