summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Recover lost bgp_peer.c Changed bgp_terminate to setpaulo2010-02-042-35/+24
| | | | PEER_STATE_SHUTDOWN and to not attempt to re-enable session if set.
* Missed a few non safe calls of strerror. Improved comments.paulo2010-02-045-14/+25
|
* Corrected assert() in bgp_connection_free().Chris Hall2010-02-041-2/+5
| | | | modified: bgpd/bgp_connection.c
* Thread safe versions of inet_ntoa and strerror.paulo2010-02-0419-71/+224
|
* Review and tidy new code and comments.Chris Hall2010-02-0415-392/+421
| | | | | | | | | | | | | | | | | | | Follows David Lamparter's code for update-source handling. modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_fsm.c modified: bgpd/bgp_fsm.h modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_read.h modified: bgpd/bgp_notification.c modified: bgpd/bgp_notification.h modified: bgpd/bgp_peer.c modified: bgpd/bgp_peer.h modified: bgpd/bgp_session.c modified: bgpd/bgp_session.h modified: lib/prefix.c modified: lib/prefix.h
* Tidying up the new FSM and exception handling.Chris Hall2010-02-048-652/+415
| | | | | | | | | | | modified: bgpd/bgp_common.h modified: bgpd/bgp_fsm.c modified: bgpd/bgp_fsm.h modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_notification.c modified: bgpd/bgp_notification.h modified: bgpd/bgp_packet.c
* Added test for sEstablished before processing incoming updates.Chris Hall2010-02-032-4/+54
| | | | | | | | | | | | | | Before disabling a session the Peering Engine now revokes its inbound queue for the session. This clears out anything that may have been queued up to that moment for the session. After disabling a session, some updates may still arrive, because it may be a while before the BGP Engine actions the disable, and stops queueing stuff. So, Peering Engine must check that the session is established before processing stuff in the queue. modified: bgpd/bgp_engine.h modified: bgpd/bgp_session.c
* Restore skips around zeroizing route counts in bgp_peer_stoppaulo2010-02-031-0/+4
|
* When prefix overflow timer expires it mustn't re-enable the peer if wepaulo2010-02-031-0/+4
| | | | are still clearing.
* Handling of peering states: Don't disable peer until sessionpaulo2010-02-035-70/+42
| | | | | | acknowledges disable. Explicity re-enable peer after clearing, unless shutdown or prefix overflow. On HUP send send admin reset, not admin shutdown.
* Use notify routine, not disable. Only chnage to clearing state ifpaulo2010-02-022-3/+4
| | | | established.
* Change nexus priorities to more closely resemble the originals.paulo2010-02-026-51/+66
|
* Free nexus's queue and thread signal.paulo2010-02-011-2/+4
|
* Added count to mqueue structure and implemented resets.Chris Hall2010-02-013-40/+151
| | | | | | modified: bgpd/bgp_peer.c -- collecting notification modified: lib/mqueue.c modified: lib/mqueue.h
* Use session->notification instead of peer's. Fix HUP - race condition.paulo2010-02-017-16/+15
|
* In bgp_route.c bgp_maximum_prefix_overfow arrange for peer to bepaulo2010-02-017-75/+88
| | | | | | disabled then enabled by timer. Replaced calls to bgp_peer_reenable with bgp_send_notify which updates peer->last_reset as well as reenabling peer.
* Clearing up the reaping of connections, and handling of notifications.Chris Hall2010-02-016-203/+262
| | | | | | | | | modified: bgpd/bgp_connection.c modified: bgpd/bgp_fsm.c modified: bgpd/bgp_fsm.h modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_peer.c modified: bgpd/bgp_session.c
* Simplified handling of connection pending queue.Chris Hall2010-02-016-93/+91
| | | | | | | | | | | | | Moved some of the complexity into functions in bgp_connection, so that "do" functions in bgp_session have to deal with less of the mechanics. modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_session.c modified: bgpd/bgp_session.h modified: lib/mqueue.c modified: lib/mqueue.h
* Testing and fixing round.Chris Hall2010-01-319-31/+78
| | | | | | | | | | | | | | | | | | | | | | | modified: bgpd/bgp_msg_read.c -- fix to accept updates when sEstablished ! modified: bgpd/bgp_packet.c -- modified XON/XOFF handling modified: bgpd/bgp_peer.c -- fix event handling to discard events when sLimping. modified: bgpd/bgp_route.c -- announce routes when sEstablished modified: bgpd/bgp_session.c -- add XOFF test free stream in update_receive when mqb_destroy modified: bgpd/bgp_session.h -- add XOFF threshold & XOFF test modified: bgpd/bgpd.c -- PRO TEM reenable in bgp_clear for max-prefix handling modified: lib/log.c -- fix zlog_backtrace modified: lib/mqueue.c -- dasserts for mqb_free_count
* Allow totally empty config file (even though it's useless).paulo2010-01-291-1/+15
|
* Enable zebra clientpaulo2010-01-291-4/+0
|
* Changed zclient to use qfiles etc when we have a nexus. For BGP clientpaulo2010-01-289-94/+288
| | | | | | | it runs in the routing_nexus. Makefile tidied. Fixed a few warnings. Re-enabled zclient, horrors of horrors bpg_nexthop thought it OK to poke arround with zclients threads directly. Now fixed, all private to zclient.
* Merge branch 'bgp_engine' of /git/quagga.euro-ix into bgp_engineChris Hall2010-01-273-7/+7
|\
| * Fixed some missed peer state name changes.paulo2010-01-273-7/+7
| |
* | Binding to interfaces and counting of messages.Chris Hall2010-01-2716-187/+353
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wired up message counters in bgp_session structure. Added fields to session for neighbor interface and neighbor update-source -- so that these can be set when connect() is done. Peering Engine resolves any interface name to an address, so that BGP Engine doesn't have to. Reinstated as much code as necessary in bgp_network to bind to specific interfaces, as set in the session. Moved setting of bgp_nexthop_set() back into Routeing Engine. Result is that only Peering Engine talks to Zebra or uses the iflist. Wired up setting of TTL. Reworked connections locking of the session mutex so more robust if/when connections are cut loose from the session. Made peer_index entry point at connection, not session. Works better in bgp_network that way. modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_fsm.c modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_network.c modified: bgpd/bgp_network.h modified: bgpd/bgp_peer.c modified: bgpd/bgp_peer.h modified: bgpd/bgp_peer_index.c modified: bgpd/bgp_peer_index.h modified: bgpd/bgp_session.c modified: bgpd/bgp_session.h modified: lib/prefix.h modified: lib/sockunion.c modified: lib/sockunion.h
* Wite route refresh received. Hive off statistics into separate struct.paulo2010-01-2710-91/+199
|
* Fixed program shutdown. Added peering engine side of TTL changing.paulo2010-01-2720-119/+324
| | | | | Changed names of peer states. Writed in peering engine side of sending route_refresh.
* Wiring up ROUTE-REFRESH and ORF handling. Work-in-progress.Chris Hall2010-01-2717-271/+833
| | | | | | | | | | | | | | | | | | | | modified: bgpd/bgp.h modified: bgpd/bgp_common.c 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_msg_read.c modified: bgpd/bgp_msg_read.h modified: bgpd/bgp_msg_write.c 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_route_refresh.c modified: bgpd/bgp_route_refresh.h modified: lib/qafi_safi.h
* Merge branch 'bgp_engine' of /git/quagga.euro-ix into bgp_engineChris Hall2010-01-256-17/+80
|\
| * Fixed problems in mqueue keeping tail pointers correct. Implementedpaulo2010-01-256-17/+80
| | | | | | | | | | program terminate code that waits for all sissions to become disabled before terminating pthreads and running exit code.
* | Fix bgp_session_do_disable() to return exactly one eDisabled event.Chris Hall2010-01-254-6/+27
|/ | | | | | | modified: bgpd/bgp_fsm.c modified: bgpd/bgp_notification.c modified: bgpd/bgp_notification.h modified: bgpd/bgp_session.c
* Getting BGP Engine to start and removing warnings.Chris Hall2010-01-2440-791/+913
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Finish the wiring required to get bgp_msg_read to process OPEN messages into the connection's open_state, and be able to check for correct peer AS, etc. Removed bugs preventing messages from being written. Added BGP Id check to collision detection logic. Removed as many warnings from comilation as possible. Replaced horrible FIFO kludge in the process. (Introduced the even more horrible miyagi kludge.) modified: bgpd/bgp_advertise.c modified: bgpd/bgp_advertise.h modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_debug.c modified: bgpd/bgp_fsm.c modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_network.c modified: bgpd/bgp_nexthop.c modified: bgpd/bgp_notification.c modified: bgpd/bgp_open.c modified: bgpd/bgp_packet.c modified: bgpd/bgp_session.c modified: bgpd/bgp_session.h modified: bgpd/bgpd.c modified: lib/Makefile.am modified: lib/distribute.c modified: lib/if_rmap.c new file: lib/miyagi.h modified: lib/prefix.h modified: lib/sockopt.c modified: lib/stream.c modified: lib/thread.c modified: lib/vty.c modified: lib/zebra.h modified: tests/bgp_capability_test.c modified: tests/bgp_mp_attr_test.c modified: tests/ecommunity_test.c modified: tests/heavy-thread.c modified: tests/heavy-wq.c modified: tests/heavy.c modified: tests/main.c modified: tests/test-checksum.c modified: tests/test-sig.c modified: watchquagga/watchquagga.c modified: zebra/if_netlink.c modified: zebra/ioctl.c modified: zebra/rt_netlink.c modified: zebra/rtread_netlink.c
* Blitz on bgp_msg_read, particularly OPEN message handlingChris Hall2010-01-2321-899/+1532
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the BGP Engine the OPEN message needs to be processed into the open_recv structure in the *connection*. The OPEN that arrives must be checked for acceptability before it is acknowledged. Later the connection may be discarded in collision resolution, or the connection may become the Established connection, and the open_recv structure is passed to the session and hence to the Peering Engine. modified: bgpd/bgp.h modified: bgpd/bgp_common.c modified: bgpd/bgp_common.h modified: bgpd/bgp_connection.c modified: bgpd/bgp_connection.h modified: bgpd/bgp_fsm.c modified: bgpd/bgp_msg_read.c modified: bgpd/bgp_msg_read.h modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_notification.c modified: bgpd/bgp_notification.h modified: bgpd/bgp_open.h modified: bgpd/bgp_open_state.c modified: bgpd/bgp_open_state.h modified: bgpd/bgp_packet.c modified: bgpd/bgp_session.h modified: lib/distribute.c modified: lib/if_rmap.c modified: lib/qafi_safi.h modified: lib/stream.c modified: lib/stream.h
* Fix "write file" command so reports "threaded". Working on Shutdown andpaulo2010-01-227-25/+83
| | | | | | HUP. Shutdown needs mechanism to know when bgp_engine has closed everything. HUP don't understand how it is supposed to cope with added/ deleted/retained peers and get them going again.
* Reduce peer FSM now that session handled elsewhere. Wire up statuspaulo2010-01-228-40/+52
| | | | changes, Idle, Established, Clearing, Deleted removed other status.
* Fixes to get 3 threads working. Fixes to get threaded command working.paulo2010-01-219-32/+57
| | | | | | Removed some of the temporary debuggery in qtimers that only worked in 1 thread. Initialised the mqueue mutex. Stopped peer_index from zeroizing its mutex after it had been initialized.
* Tidy up handling of fd_last in qpselect.Chris Hall2010-01-212-14/+28
|
* Weed out last vestiges of FSM setting session->state.Chris Hall2010-01-212-6/+1
|
* close(fd) in bgp_connection_close()Chris Hall2010-01-211-4/+0
|
* Fix typo in bgp_connection_open.Chris Hall2010-01-211-1/+1
|
* Keep timer running past IO errors in Connect/Active states.Chris Hall2010-01-213-68/+58
|
* Fix sense of session->connect flagChris Hall2010-01-202-2624/+1
| | | | | deleted: bgpd/bgp_fsm.x -- added by mistake modified: bgpd/bgp_session.c -- get session->connect right
* Fix debuggery in qtimers. Check NULL notify pointer in bgp_vtypaulo2010-01-202-2/+3
|
* Fix sockunion_connect() error handling.Chris Hall2010-01-201-1/+1
|
* Fixing heap_push.Chris Hall2010-01-201-3/+3
|
* Fixed dangling uses of bgp_notify_free()Chris Hall2010-01-205-9/+7
| | | | | | | | modified: bgpd/bgp_msg_write.c modified: bgpd/bgp_notification.c modified: bgpd/bgp_open_state.c modified: bgpd/bgp_peer.c modified: bgpd/bgp_session.c
* Adding verify debug code for qtimers and tidied up.Chris Hall2010-01-2012-59/+2830
| | | | | | | | | | | | | | | | modified: bgpd/bgp_connection.c -- using _unset functions -- added bgp_connection_close_file modified: bgpd/bgp_connection.h modified: bgpd/bgp_fsm.c -- checked notification handling -- uses bgp_connection_close_file modified: bgpd/bgp_notification.c -- added _unset function modified: bgpd/bgp_notification.h modified: bgpd/bgp_open_state.c -- added _unset function modified: bgpd/bgp_open_state.h modified: lib/qtimers.c -- added debug _verify function modified: lib/qtimers.h modified: lib/sockunion.c -- added _unset function modified: lib/sockunion.h
* Fix bug in bgp_connection not clearing pointers after free. Plantedpaulo2010-01-204-7/+32
| | | | asserts to try to track timer crash.
* Small fix to bgp_network & add reset to peer indexChris Hall2010-01-194-65/+97
| | | | | | | Correctly stepping along list of listeners in bgp_md5_set_listeners. Added reset function for peer index and remove spurious argument for bgp_peer_index_mutex_init.
* Use sigprocmask when non-threaded. Fixed assert.paulo2010-01-192-2/+9
|