Age | Commit message (Collapse) | Author |
|
Cleanup path attribute handling. First of all kill struct attr_flags, all
those infos are now in struct rde_aspath. Second move attribute parser
functions into rde.c, rde_attr.c is shared between bgpd and bgpctl.
Third reimplementation of the nexthop handling. Make it IPv6 ready and
fix some major bug relating to "set nexthop".
henning@ OK if it breaks nothing
|
|
|
|
allocation. This helps to save a bit of RAM. looks good henning@
|
|
similar to memcmp() and all other compare functions in bgpd. OK henning@
|
|
route to the specified neighbor. Idea and OK henning@
|
|
|
|
ok henning otto
|
|
blackhole/reject routes will be entered to the kernel for matching ones.
this is intended to be used with the Cymru Bogon Route Server Project
(http://www.cymru.com/BGP/bogon-rs.html) and similar services, claudio ok
|
|
OK henning@
|
|
prefix tree changed form a hash table to a per AF RB tree.
OK henning@ some ideas are from Brent Graveland.
|
|
more than once
|
|
with templates. looks good, go for it henning@
|
|
ok claudio@
|
|
intended for building realtime BGP blacklists (e.g. with spamd);
ok claudio & henning
|
|
|
|
on communities, e.g match from any community 24640:* set localpref 666
OK henning@
|
|
|
|
Added attr_move() so that we can copy the attribute before calling the filter.
path_update() will now use the passed attribute so it can't be simply reused.
OK henning@
|
|
for route-collectors. OK henning@
|
|
struct in_addr. OK henning@
|
|
dump need some more work. OK henning@
|
|
neighbors. While doing that check also that the nexthop is valid (not class D
or E and not in 127/8 range). Kill some TODO and XXX and rename the british
neighbour to neighbor as used everywhere else. OK henning@
|
|
this is a huge step forward. OK henning@
|
|
loop detection. OK henning@
|
|
Check that evry attribut is only allowed once and ensure that the
mandatory attributes are present.
no objections henning@
|
|
command. OK henning@
|
|
|
|
parser to rde_attr.c where it belongs. Still missing: better aspath loop
detection (should be done afterwards) and some basic error checking for
optional attributes. OK henning@
|
|
|
|
|
|
attached to a pseudo peer and inserted like all other prefixes into the RIB.
OK henning@
|
|
with len 0. Needed vor ibgp and local network announcements.
OK henning@
|
|
The first limits the number of sent prefixes per peer the latter controls
which prefix we do annouce to the neighbor.
Another looks good from henning@
|
|
ignore all queued updates after an error. Looks good henning@
|
|
Now bgpctl neighbor <IP> up does work as expected.
Looks good from henning@
|
|
For ibgp the nexthop is normally passed unmodified unless the nexthop is
equal to the remote peer ip. To ebgp peers the nexthop is changed to the
local session ip unless the remote peer ip and the nexthop are on the same
subnet. OK henning@
|
|
is more appropriate. The rde uses now in most cases struct bgpd_addr.
OK henning@
|
|
peer session. This is needed to set the correct nexthop address in outgoing
bgp UPDATES. OK henning@
|
|
neighbors. Fix a bug in the update generation. If no path attributes are
available e.g. a packet with only withdraws we need to set (and write) the
bgp path attribute field to zero. With this change we are able to send
valid updates to our neighbors with one exception: the nexthop field which
needs to be changed for ebgp neighbors.
OK henning@
|
|
peer basis. A queue runner will dequeue and package those messages to valid
bgp UPDATE messages and send them to the SE.
Not yet done is per peer type attribute handling (like aspath prepends and
nexthop modifications) and the queue runner could be a tad smarter. All in
all this gives us a good starting point for the missing parts.
OK henning@
|
|
|
|
|
|
zap aspath->state, which was a copy of aspath->nexthop->state, for a tiny
little bit faster access. tho, it happened what had to happen, they ran
out of sync.
it's just not worth it.
also add a missinf LIST_INIT.
|
|
|
|
The RDE just tracks the nexthop IPs and reacts on nexthop messages
from the parent.
ok henning@
|
|
routing table. OK henning@
|
|
introduce msgbuf API and bundle all info needed for the write buffers in a
struct msgbuf.
also switch to a write queue per handled connection (each bgp session, each
pipe) instead of one big one.
fixes some subtle problems and is overall nicer.
ok claudio@
|
|
aligned memory (u_int16_t) therefor crashed the RDE on my sparc64. All
buffer specific functions use now void * instead of u_char * so most cast
are now history. Tested on sparc64 and i386. OK henning@
|
|
|
|
work correctly because the peer id changes on config reload. The code in
the RDE per se should be OK.
|