| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ \ |
|
| |\ \
| | | |
| | | |
| | | | |
into bgp_engine
|
| | | |
| | | |
| | | |
| | | | |
with having 1 or multiple nexus (and pthreads).
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | | |
modified: bgpd/bgp_nexthop.c -- skipped queueing of connect
"thread"
modified: bgpd/bgp_zebra.c -- disabled and closed down
"threads"
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: bgpd/bgp_common.h
Renaming of states: sStopping -> sLimping
sStopped -> sDisabled
modified: bgpd/bgp_fsm.c
Removed last vestige of session->state stuff.
modified: bgpd/bgp_peer.c
Upgraded event processing so that disable session has full hand
shake with BGP Engine.
modified: bgpd/bgp_session.c
Changed to implement sLimping and sDisabled states and the
disable session hand-shake.
modified: bgpd/bgp_session.h
|
| |
| |
| |
| |
| | |
pthreads then all point at same nexus object. Do necessary in-thread
initialization and finalization. Fix some minor warnings.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: bgpd/bgp_connection.c completed pending queue
modified: bgpd/bgp_engine.c TODOs for start/stop
modified: bgpd/bgp_msg_write.c ) added send_update and send_eor
modified: bgpd/bgp_msg_write.h )
modified: bgpd/bgp_open_state.c fixed free
modified: bgpd/bgp_packet.c tidied up peer->work usage
modified: bgpd/bgp_session.c ) completed various message handlers
modified: bgpd/bgp_session.h )
modified: lib/mqueue.c ) added revoke
modified: lib/mqueue.h )
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
engine. Wired up Routing engine side of sending update packets to BGP
engine with flow control.
Eliminated a lot of compilation errors and warnings although a few
remain.
Have skipped out now unused code, particularly in bgp_packet.c that will
be deleted eventually.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Along with the introduction of the sStopping session state, move
responsibility for the session->state field entirely back to
Peering Engine, and get it to change same when session events
arrive.
Stop FSM from writing the session->state, session->event,
session->notification, session->err and session->ordinal fields.
(Which may now be used by Peering Engine if it wants.)
Handle sStopping as an active state where required.
Not issue a further session disable once in sStopping state.
Wire up bgp_connection and bgp_msg_read.
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_msg_read.c
modified: bgpd/bgp_msg_read.h
modified: bgpd/bgp_peer.c
modified: bgpd/bgp_peer_index.c
modified: bgpd/bgp_session.c
modified: bgpd/bgp_session.h
|
| |
| |
| |
| | |
new. Still work in progress.
|
| |
| |
| |
| | |
TODOs.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: .gitignore
modified: bgpd/Makefile.am
modified: bgpd/bgp.h
modified: bgpd/bgp_common.h
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_connection.h
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_msg_write.c
modified: bgpd/bgp_msg_write.h
modified: bgpd/bgp_notification.c
modified: bgpd/bgp_notification.h
modified: bgpd/bgp_open_state.c
modified: bgpd/bgp_open_state.h
modified: bgpd/bgp_packet.h
new file: bgpd/bgp_route_refresh.c
new file: bgpd/bgp_route_refresh.h
modified: bgpd/bgp_session.c
modified: bgpd/bgp_session.h
modified: lib/Makefile.am
new file: lib/confirm.h
modified: lib/memtypes.c
modified: lib/stream.c
modified: lib/stream.h
modified: lib/zassert.h
|
| |
| |
| |
| | |
bgp messages
|
| |
| |
| |
| | |
wiring. New queue I/F handling. Routing engine nexus.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: bgpd/Makefile.am
modified: bgpd/bgp_common.h
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_connection.h
modified: bgpd/bgp_engine.c
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_fsm.h
new file: bgpd/bgp_msg_write.c
new file: bgpd/bgp_msg_write.h
modified: bgpd/bgp_notification.c
modified: bgpd/bgp_notification.h
modified: bgpd/bgp_session.c
modified: bgpd/bgp_session.h
modified: lib/sockunion.h
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: bgpd/Makefile.am
modified: bgpd/bgp.h
modified: bgpd/bgp_common.h
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_connection.h
modified: bgpd/bgp_engine.h
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_network.c
modified: bgpd/bgp_network.h
new file: bgpd/bgp_peer_index.c
new file: bgpd/bgp_peer_index.h
modified: bgpd/bgp_session.c
modified: bgpd/bgp_session.h
modified: lib/memtypes.c
modified: lib/mqueue.h
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
modified: bgpd/bgp_common.h
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_connection.h
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_fsm.h
modified: bgpd/bgp_network.c
modified: bgpd/bgp_open_state.h
modified: bgpd/bgp_session.c
modified: bgpd/bgp_session.h
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On branch bgp_engine
modified: .gitignore
modified: bgpd/Makefile.am
new file: bgpd/bgp.h
new file: bgpd/bgp_common.c
new file: bgpd/bgp_common.h
new file: bgpd/bgp_connection.c
new file: bgpd/bgp_connection.h
modified: bgpd/bgp_debug.c
new file: bgpd/bgp_engine.c
new file: bgpd/bgp_engine.h
modified: bgpd/bgp_fsm.c
modified: bgpd/bgp_fsm.h
modified: bgpd/bgp_network.c
modified: bgpd/bgp_network.h
new file: bgpd/bgp_notification.c
new file: bgpd/bgp_notification.h
modified: bgpd/bgp_open.c
new file: bgpd/bgp_open_state.c
new file: bgpd/bgp_open_state.h
modified: bgpd/bgp_packet.c
new file: bgpd/bgp_peer.c
new file: bgpd/bgp_peer.h
modified: bgpd/bgp_route.c
new file: bgpd/bgp_session.c
new file: bgpd/bgp_session.h
modified: bgpd/bgp_vty.c
modified: bgpd/bgp_zebra.c
modified: bgpd/bgpd.c
modified: bgpd/bgpd.h
modified: lib/Makefile.am
modified: lib/memtypes.c
modified: lib/mqueue.c
modified: lib/mqueue.h
new file: lib/qafi_safi.h
modified: lib/qpselect.c
modified: lib/qpselect.h
modified: lib/qpthreads.c
modified: lib/qpthreads.h
modified: lib/sockopt.c
modified: lib/sockunion.c
modified: lib/sockunion.h
modified: lib/stream.c
modified: lib/stream.h
modified: lib/symtab.h
modified: lib/zebra.h
|
| | |
|
| |
| |
| |
| |
| | |
before and after reading config file. Announce on all vty when shutting
down.
|
| | |
|
| | |
|
|\ \ |
|
| |\| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* bgpd/bgp_aspath.c
* ashash: only used in one file, make static
* aspath_count_numas(): dead code, sayonara
* bgpd/bgpd.c
* peer_nsf_stop(): only used in one file, make static
* bgpd/bgp_packet.h
* bgp_capability_receive(): add missing prototype for a
global function
|
| | |
| | |
| | |
| | | |
thread to run in. Add qlib_init stuff. Add -t parameter for "threaded".
|
| | | |
|
| | |
| | |
| | |
| | | |
Each has its own nexus.
|
|\| | |
|
| |\ \
| | |/
| |/| |
|
| | |\ |
|
| | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* bgpd/bgp_fsm.c
* bgp_clearing_completed(): only used in one file, can be static
* bgpd/bgp_packet.c
* afi2str(): sayonara
* safi2str(): sayonara
* bgpd/bgp_route.c
* bgp_distance_reset(): sayonara
* bgpd/bgp_zebra.c
* bgp_ifindex_by_nexthop(): sayonara
|
|\| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Make one version of check prefix bit, and put it inline
with proper prototype. This gets rid of some macro's and also some
assert() that can never happen on a non-broken compiler.
* bgpd/bgp_table.c
* CHECK_BIT(): sayonara
* check_bit(): sayonara
* SET_LINK(): sayonara
* set_link(): make use of prefix_bit() instead of check_bit()
* bgp_node_match(): idem
* bgp_node_lookup(): idem
* bgp_node_get(): idem
* lib/prefix.h
* prefix_bit(): new inline version of check_bit()
* lib/table.c
* CHECK_BIT(): sayonara
* check_bit(): sayonara
* SET_LINK(): sayonara
* set_link(): make use of prefix_bit() instead of check_bit()
* route_node_match(): idem
* route_node_lookup(): idem
* route_node_get(): idem
* ospf6d/ospf6_lsdb.c
* CHECK_BIT(): sayonara
* ospf6_lsdb_lookup_next(): make use of prefix_bit() instead of
CHECK_BIT()
* ospf6_lsdb_type_router_head(): idem
* ospf6_lsdb_type_head(): idem
* ospf6d/ospf6_route.c
* CHECK_BIT(): sayonara
* ospf6_route_match_head() make use of prefix_bit() instead of
* CHECK_BIT()
|
| | | |
|
| | |
| | |
| | |
| | | |
Needs debugging.
|
| |/
|/| |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Affects: lib/plist.c & .h and bgpd/bgp_clist.c & .h
With very long prefix-lists the repeated scanning of the linked list
of prefix_list_entry slowed things down (scaled O(n**2)). For lists
of 10,000 or more entries this could consume several *minutes* while
reading a configuration file.
This is a substantial re-working of the code, making use of new
facilities introduced in lib/symtab and lib/vector.
The prefix-list names are held in a symbol table. The addition of
entries to a prefix-list uses binary-chop searches rather than linear
list scans.
For bgpd, all references to prefix-lists are replaced by symbol table
references. The peer_prefix_list_update function is called every time
a prefix-list changes. This used to run through every possible
reference to a prefix-list to see if its address needed updating.
For other daemons, the old interfaces have been preserved.
The prefix match code has been stream-lined a little.
The BGP community-list and extcommunity-list handling has also been
updated to use a symbol table to hold the names. This improves the
processing of route-maps, which look-up the list by name each time
it is used. (In the longer term, this should be replaced by the use
of symbol references.)
Other files affected:
bgpd/bgpd.c & .h
bgpd/bgp_route.c & .h
bgpd/bgp_packet.c
bgpd/bgp_vty.c
updated to use prefix list references & community list symbols.
symtab.c & .h
small change to symbol_dec_ref & symbol_zero_ref to return NULL
if reference count goes to zero, and the symbol otherwise.
|
|
|
|
|
|
| |
* bgp_network.c: (bgp_md5_set) Missing piece from earlier listener change
did not get ported from Vyatta code into upstream. The list
listener_sockets changed from (int *) to (struct bgp_listener *).
|
|
|
|
|
|
|
| |
* bgp_network.c: (bgp_accept) The code in current git will crash as part of
the revised listener code is missing. The new listener thread code passes
a pointer to a bgp_listener structure, not the bgp pointer. The old code
always got a NULL for bgp pointer, so that is now hard coded.
|
|
|
|
|
| |
* bgp_filter.h: Gcc complains the function prototype is not correct because
the function argument is using old K&R style.
|
|
|
|
|
|
| |
* bgpd.c: (peer_lookup_with_open) Bodged application of previous patch
meant the second loop around bgp->peer wasn't included in the loop
around bm->bgp as it was supposed to be. Fix..
|
| |
|
|
|
|
|
|
|
|
|
| |
* bgp_attr.c: (bgp_mp_reach_parse) There are some interoperability issues
for MBGP (particularly IPv4 multicast NLRI) between different
implementations. In order to get some next hops to install correctly in
the BGP tables, it appears to be necessary to copy the multiprotocol next
hop into the base next hop field. This is related to differences in RFC
2283 and RFC 2858.
|
| |
|
|
|
|
|
|
| |
* bgpd.c: (peer_lookup) Search through all BGP instances for matches, not just
the default instance, if no specific instance is given.
(peer_lookup_with_open) same.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* bgp_fsm.c: I have found an fd leak in bgpd that is caused by the 'new'
Clearing state. I've been seeing it from hold timer failures, but it can
also be triggered by other things.
When Hold_Timer_expired fires in Established state, a notify is sent and
BGP_Stop event queued. The fsm then transitions into Clearing state.
That is the problem; When the BGP_Stop event is serviced, the state table
says to ignore it while in Clearing. Thus bgp_stop is not called and the
fd leaks. Previously the peer would be in Idle state, which correctly
handles the BGP_Stop event.
Fix by making bgp_stop safe to call from Clearing state, without losing
ClearingCompleted events, and then ensuring it is called prior to
transition from Clearing->Idle.
|
|
|
|
|
|
|
| |
AS_CONFED_SEQUENCE segment should always be deleted when prepending
(e.g. with a route-map) an AS_SEQUENCE segment to an AS path. Otherwise,
AS_CONFED_SEQUENCE will not be deleted later when updating EBGP peers (since
it is not the leftmost segment) and will leak outside the confederation.
|