summaryrefslogtreecommitdiffstats
path: root/bgpd
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge branch 'bgp_engine' of /git/quagga.euro-ix into bgp_engineChris Hall2010-01-191-13/+40
|\ \
| * \ Merge branch 'bgp_engine' of ssh://paulo@80.177.246.130/git/quagga.euro-ix ↵paulo2010-01-185-84/+168
| |\ \ | | | | | | | | | | | | into bgp_engine
| * | | Nexus to handle old threads and process the bgp local events. Dealspaulo2010-01-181-13/+40
| | | | | | | | | | | | | | | | with having 1 or multiple nexus (and pthreads).
* | | | Disable zebra pro temChris Hall2010-01-192-33/+44
| |/ / |/| | | | | | | | | | | | | | | | | modified: bgpd/bgp_nexthop.c -- skipped queueing of connect "thread" modified: bgpd/bgp_zebra.c -- disabled and closed down "threads"
* | | Refining the session state handling.Chris Hall2010-01-185-84/+168
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Wired in nexus for bgp_ routing_ and cli_ such that if not usingpaulo2010-01-1811-126/+100
| | | | | | | | | | pthreads then all point at same nexus object. Do necessary in-thread initialization and finalization. Fix some minor warnings.
* | Further work-in-progress.Chris Hall2010-01-178-113/+540
| | | | | | | | | | | | | | | | | | | | | | | | | | 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 )
* | Wired up receiving updates, with update packet sent from BGP to Routingpaulo2010-01-1511-207/+224
| | | | | | | | | | | | | | | | | | | | | | 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.
* | Make session state a Peering Engine item.Chris Hall2010-01-148-84/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | More knitting and clean up replacing old state machine with events withpaulo2010-01-1411-255/+240
| | | | | | | | new. Still work in progress.
* | Knitting it all together. Still not got clean compile. Still lots ofpaulo2010-01-1319-351/+340
| | | | | | | | TODOs.
* | Progress on bgp_msg_read. Still on going.paulo2010-01-119-229/+393
| |
* | Further work-in-progressChris Hall2010-01-1017-2558/+1372
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Fixed type in bgp_open_state.c. New file bgp_msg_read.c for parsingpaulo2010-01-082-21/+940
| | | | | | | | bgp messages
* | Update peer from received open state. Threaded command. Peer indexpaulo2010-01-087-326/+536
| | | | | | | | wiring. New queue I/F handling. Routing engine nexus.
* | Further work-in-progress.Chris Hall2010-01-0813-278/+2943
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Continuing work-in-progressChris Hall2010-01-0813-268/+1188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Added "threaded" command.paulo2010-01-061-4/+27
| |
* | Work in progress on BGP EngineChris Hall2010-01-069-417/+907
| | | | | | | | | | | | | | | | | | | | | | | | 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
* | Initial commit for bgp_engine branch -- seeding new files...Chris Hall2010-01-0428-2010/+7974
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Can't use stderr after daemonizing, goes to dev/nullpaulo2009-12-181-8/+0
| |
* | QDEBUG handling. Debug banner on stderr, vty and log file. Annoucepaulo2009-12-181-1/+19
| | | | | | | | | | before and after reading config file. Announce on all vty when shutting down.
* | Use qpt version of pthread_joinpaulo2009-12-171-3/+2
| |
* | Fix shutdown. Move cpu stats command to cli thread.paulo2009-12-171-9/+23
| |
* | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-175-21/+4
|\ \
| * | Merge branch 'master' of git://code.quagga.net/quaggaChris Hall (GMCH)2009-12-175-21/+4
| |\|
| | * bgpd: code cleanupStephen Hemminger2009-12-175-21/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* | | Get CLI thread and UI working properly. Sex commands according topaulo2009-12-151-7/+14
| | | | | | | | | | | | thread to run in. Add qlib_init stuff. Add -t parameter for "threaded".
* | | Using message queue to send commands from cli thread to bgp thread.paulo2009-12-141-5/+21
| | |
* | | vty running in main thread. bgp running in its own thread.paulo2009-12-111-10/+40
| | | | | | | | | | | | Each has its own nexus.
* | | Merge branch 'master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-104-75/+1
|\| |
| * | Merge branch 'master' of /git/quagga.euro-ixChris Hall (GMCH)2009-12-108-1441/+1305
| |\ \ | | |/ | |/|
| | * Merge remote branch 'quagga/master' of /git/quagga.euro-ixChris Hall (GMCH)2009-12-092-33/+9
| | |\
| * | | bgpd: compile warnings cleanupStephen Hemminger2009-12-104-75/+1
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* | | Merge remote branch 'quagga/master' of /git/quagga.euro-ix into pthreadsChris Hall (GMCH)2009-12-092-33/+9
|\| |
| * | lib: move check_bit into prefix common codeStephen Hemminger2009-12-091-31/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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()
| * | bgpd: work around warning in assegments_parse()Denis Ovsienko2009-12-041-2/+5
| | |
* | | Wired up the CLI thread with new qpnexus type. Still work in progress.paulo2009-12-081-1/+5
| | | | | | | | | | | | Needs debugging.
* | | Make vty and log thread safe under single mutex.paulo2009-12-071-2/+2
| |/ |/|
* | Upgrade Prefix-List & BGP Community-List handlingChris Hall (GMCH)2009-11-268-1441/+1305
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* bgpd: fix md5 set on listen socketsStephen Hemminger2009-08-281-9/+10
| | | | | | * 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: missing pieces from listener patchStephen Hemminger2009-08-131-10/+5
| | | | | | | * 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: compiler warning fixStephen Hemminger2009-08-131-2/+2
| | | | | * bgp_filter.h: Gcc complains the function prototype is not correct because the function argument is using old K&R style.
* bgpd: Fix mistakes in applying 'allow inbound connections to non-default view'Paul Jakma2009-08-051-26/+28
| | | | | | * 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..
* [bgpd] delete erroneous extra brace..Paul Jakma2009-07-301-1/+0
|
* bgpd: Workaround for invalid MBGP next hopMichael Lambert2009-07-301-0/+3
| | | | | | | | | * 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/trivial: Fix indentation in previousPaul Jakma2009-07-282-35/+28
|
* bgpd: Allow inbound connections to non-default viewSteve Hill2009-07-281-7/+22
| | | | | | * 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.
* bgpd: fd leak in bgpdSteve Hill2009-07-281-15/+33
| | | | | | | | | | | | | | | | | * 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.
* bgpd: Delete AS_CONFED_SEQUENCE when prepending an AS_SEQUENCE type segmentVasilis Tsiligiannis2009-07-281-0/+4
| | | | | | | 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.