summaryrefslogtreecommitdiff
path: root/usr.sbin/bgpd/rde.c
AgeCommit message (Collapse)Author
2009-12-08Big AID change part two. This changes the mp capability into an array ofClaudio Jeker
flags. This makes a lot of code much easier since the comparison is now trivial. Additionally calculate the negotiated capabilities for a session in the SE and pass that and only that to the RDE. This makes the decisions in the RDE a lot easier. OK henning@
2009-12-01Use an artificial address family id in struct bgpd_addr and almost everywhereClaudio Jeker
else. Adds conversion functions to map AFI/SAFI and the Unix AF_ values from and into AID used in bgpd. This is needed to support things like MPLS VPN and other upcomming changes that need to play a lot with AFI/SAFI pairs. Mostly mechanical change, henning@ has no particular issues with this. Must go in so that I can continue working.
2009-11-11Plug two memory leaks in error pathes. Found by parfait. OK henning, jsgClaudio Jeker
2009-11-02Implement IMSG_CTL_LOG_VERBOSE similar to ospfd. Even though bgpd has almostClaudio Jeker
no log_debug() it makes more sense to make all routing daemons behave the same.
2009-10-28Free correct buffer.Claudio Jeker
2009-10-26Better error handling when doing mrt dumps (e.g. when there is no more spaceClaudio Jeker
on the disk). Before the SE spinned and the RDE may even crash in these events. Found by Elisa Jasinska. OK henning@
2009-10-12Only dump AFI/SAFI pairs that are active. For IPv6 check the announced andClaudio Jeker
received MP capability for IPv4 this does not work when announce capabilities no is set so check if announce IPv4 none was set in the config. The capabilities code needs rework since those checks are very error prone. With this we don't leak unneeded EOR markers for other AFI/SAFI pairs.
2009-10-12Send correct EOR updates. peer_send_eor() does not accept the AFI_ALL andClaudio Jeker
SAFI_ALL shortcuts. This should fix issues with Juniper boxes that started when I enabled more capabilities by default. Fix and report by rivo nurges (rix at estpak dot ee) Thanks.
2009-10-08remove an unused variable, ok claudio@ henning@Stuart Henderson
2009-10-05Load prefixes into new created RIBs at reload time by walking over theClaudio Jeker
Adj-RIB-In. This only works correctly when softreconfig in is enabled (which is the default). This is needed to allow dynamic creation of additional RIBs. OK henning@
2009-10-05draft-ietf-idr-restart is RFC 4724 since quite some time.Claudio Jeker
Fix function name in a warning message.
2009-08-06Implement the error handling as proposed in draft-ietf-idr-optional-transitiveClaudio Jeker
for optional transitive attributes. In short if the partial bit is set on an optional transitive attribute but the attribute fails validation ignore the attribute or mark the path as ineligible instead of killing the session with a NOTIFICATION. Tested, input and OK sthen, OK henning
2009-06-29Unfuck mrt table dumps and plug a memory leak while there.Claudio Jeker
2009-06-22Log a warning when "enforce remote-as" is triggered. ok claudio@Stuart Henderson
2009-06-07Change the way fds passed over a socket are retreived on the receiving side.Eric Faurot
Currently the receiver fetches an imsg via imsg_get() and if he expects an fd, he then calls imsg_get_fd() to fetch the next fd queued on the imsgbuf from which the imsg came. This changes hides the fd queueing mechanism to the API user. When closing an imsg with an fd, the message is flagged so that the receiving end knows it must dequeue the fd in imsg_get() and return it with the imsg structure. This way there is no (less) possible screw up from imsg_get_fd() not being called directly after imsg_get() by the user. The retreived imsg is self-contained. ok pyr@, "I like that" henning@
2009-06-07First attempt at reload support for RIBs. There is some magic that I doClaudio Jeker
not fully understand but at least no flames are comming out of my test box anymore.
2009-06-06Fix bgpctl show rib prefix/len command. Problem reported by Insan Praja.Claudio Jeker
2009-06-06sync bgpd/bgpctl with the common imsg code, making it lib ready as well.Eric Faurot
ok claudio@ pyr@
2009-06-06Make it possible to select the RIB that a show command should show.Claudio Jeker
2009-06-06Some preliminary filter magic to support multiple RIBs on the filters.Claudio Jeker
It is ugly but does the trick for now. Filters will be rewritten anyway. The rib specifier only makes sense on from rules. e.g. deny rib OMG from any
2009-06-06Only generate updates for peers that are member of the RIB that update isClaudio Jeker
comming from.
2009-06-06Minor cleanup.Claudio Jeker
2009-06-05Make it possible to bind peers to a specified RIB. Now only filters andClaudio Jeker
bgpctl are missing to have full support of multiple RIBs.
2009-06-05Change the way we do mrt dumps in the rde (from the retarded only one dumpClaudio Jeker
possible to as many as you like). The mrt dumps are now done with the same tree walking code as the control messages. Makes the RDE respond a bit faster and use less memory while dumping.
2009-06-04Make mrt understand alternate RIB plus remove some other static rib references.Claudio Jeker
There is still a problem with the mrt dumps because we only allow one in the RDE. This needs some additional work.
2009-06-04Export networks to be redistributed into all ribs for now.Claudio Jeker
2009-06-04Add "rde rib <name>" to the config and allow the rde to use these other RIBs.Claudio Jeker
Still a bit hackish, reload is missing and printconf as well. Looks good h@
2009-06-02Make show rib as and show rib community use the same dump code as the otherClaudio Jeker
show rib commands. This makes the output sorted by prefix and not some rather randomly output.
2009-06-02Move the rest of the rib dump functions into rde_rib.c where it belongs.Claudio Jeker
2009-06-01Use only one list to queue the dump contextes on. Use the list in structClaudio Jeker
rib_context instead of the ctl specific rde_dump_ctx to make it more general.
2009-05-27Move update and withdraw code into own functions to simplify the necessaryClaudio Jeker
changes to make multiple RIB functional. Also change the way we account the prefixes per peer (for maxprefix check). Every prefix that was added to any RIB is counted. OK henning@
2009-05-17F_LOCAL and F_ORIGINAL are gone. The Adj-Rib-In is now a distinct tree.Claudio Jeker
Fix pf table code by checking if the aspath has a pftableid set or not instead of doing the F_LOCAL dance. This works because the in the Adj-Rib-In it is impossible to set pftableid.
2009-05-17Simplify the IMSG_CTL_SHOW_NETWORK case and make it actually work by sendingClaudio Jeker
the imsgs back to the right pid and not some more or less random address.
2009-05-17Rework most of the RDE to allow multiple RIBs. This is mostly preparationClaudio Jeker
work by changing the way the RDE DB is built. struct prefix and struct pt_entry are simplified and extended with a rib_entry where the decision tree is run on. From now on a prefix can only reside on one particular RIB which simplifies the code a bit. Currently there are two fixed ribs (adj-rib-in and the local-rib) which needs to be made more dynamic in upcomming commits. This is work in progress, the RDE seems to work for me and sthen@ (no flames comming out of our testrouters but there is still a lot missing) Move into the tree to simplify developement -- henning@
2009-05-11Make bgpctl show network print both AF_INET and AF_INET6 as mentioned in theClaudio Jeker
man page. Problem found by Rod Whitworth. OK sthen@
2009-04-23Rework the way we handle announced networks. Instead of two freak rde_peersClaudio Jeker
use one that is less freaky. Merge bgpctl and config networks into one tree. First step of a larger change in the RDE and this goes now in to allow to move forward.
2009-03-18Correctly check for MRT_TABLE_DUMP_MP and don't send the config to the SE.Claudio Jeker
Make mrt table-mp dumps actually work. Found on the plane from NRT to ZRH. OK henning@
2009-03-13No need for a line break, makes code a bit more compact.Claudio Jeker
2009-03-13Next step in mrt cleanup. Switch buf_write to a smarter version of itself.Claudio Jeker
Doing more the stuff msgbuf_write does and switch the only user -- mrt -- over to use this simpler way of writing out stuff.
2009-03-13Move mrt code over to use the msgbuf way of queuing buffers instead of rollingClaudio Jeker
an own version. More cleanup to come.
2009-03-13More paranoia when parsing empty updates. Make sure they are really empty andClaudio Jeker
don't come with some additional stuff attached to them. OK henning@
2009-01-13Replace NEW_ASPATH/NEW_AGGREGATOR with the naming from RFC4893,Stuart Henderson
AS4_PATH/AS4_AGGREGATOR. No binary change. ok claudio
2008-12-28Add a ugly workaround for the problem where an invalid AS4_PATH is passedClaudio Jeker
over mulitple hops and causes bgpd to close the connection. This is what the RFC requires us to do but the result is a DoS against all OpenBGPD routers when somebody injects such a bad optional transitive attribute because the intermediate routers don't give a damn about it. As a result we now ignore such bad prefixes and don't allow them in the decision process. The handling of optional transitive attributes needs to be rethinked because all of them can be abused in such a way. Idea OK by a few + henning@, tested myself against my crappy regress test suite that needs way more work.
2008-12-12Follow RFC 4271 more closely by sending the correct error back for optionalClaudio Jeker
attributes and use the correct lenght in some other error cases. OK sthen@
2008-06-15Paranoia check. Make sure that the 2 len bytes are actually available.Claudio Jeker
Another easy M hiding in my bgp source forest.
2008-05-02Fix logic when setting the F_RIB_ELIGIBLE flag. A path with a NULL nexthopClaudio Jeker
is localy originated and so is eligible by definition. Noticed and fix tested by Christian, bsd (at) cleondra (dot) ch
2008-02-26Ignore and drop path attributes with a type code of 0 instead of sending anClaudio Jeker
error back. This increases robustness without causing any issues. The RFC does not forbid the use of 0 in the type code but it is not explicitly allowed and the type code list at IANA does not mention 0 at all. OK henning@
2007-11-27Prefixes or actually pathes that would cause a rooting loops should not beClaudio Jeker
dropped when parsed but instead be added to the RIB marked as not eligible. So the decision process does not pick them up as a valid route. Tested and some ideas by Tony Sarendal (tony (at) polarcap (dot) org)
2007-09-16log_fmt_peer() does not use a static buffer so it is necessary to free theClaudio Jeker
string that it returned later. rde_update_log() did not do that. Memory leak found and diff provided by Mike Belopuhov.
2007-06-19Ignore SIGHUP in bgpd's children to allow the use of pkill -1 bgpd forPierre-Yves Ritschard
reloading. ``yeah that is good'' henning@