| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |
| |
| |
| | |
are blocked for non-main thraeds
|
| |
| |
| |
| |
| | |
before and after reading config file. Announce on all vty when shutting
down.
|
| | |
|
| | |
|
| |
| |
| |
| | |
All qpt_thread_t values are equal if !qpthreads_enabled.
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
For some timers it is convenient to have an interval stored in the
timer, and to be able to set the timer using that interval.
|
| |
| |
| |
| |
| | |
Go with vector_unset_item(). May be used to trim NULL values at the
end of a vector or to remove all NULL values from a vector.
|
| |
| |
| |
| |
| |
| | |
Remove vector_ream(), which removes item from the vector, by
vector_get_last_item(). Leaves removal from the vector to
qps_file_remove().
|
| |
| |
| |
| | |
Run memory commands in cli thread.
|
| |
| |
| |
| | |
thread to run in. Add qlib_init stuff. Add -t parameter for "threaded".
|
| | |
|
| |
| |
| |
| |
| | |
When adding to signal queue, must use mq->kick.signal.head == NULL to
check for an empty queue (not mq->kick.signal.tail == NULL).
|
| |
| |
| |
| | |
Each has its own nexus.
|
|\ \ |
|
| |\ \
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* lib/prefix.h
* prefix6_bit(): add IPv6 wrapper for prefix_bit()
* ospf6d/ospf6_lsdb.c
* ospf6_lsdb_type_router_head(): employ prefix6_bit()
* ospf6_lsdb_type_head(): idem
|
|\ \ \ |
|
| | | | |
|
| |\ \ \
| | | |/
| | |/|
| | | | |
pthreads
|
| |\ \ \
| | | | |
| | | | |
| | | | | |
pthreads
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | | |
pthreads
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Functions to set and get all user accessable parts of an mqueue_block
are now provided.
Uses the qpthreads_enabled flag to allow mqueues to work (though in a
limited fashion) when pthreads are not enabled.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This supports running without pthreads, but with code that is made
thread-safe. A Big Switch -- qpthreads_enabled -- enables or disables
all pthread functions. When disabled, all mutex calls become NOPs.
|
|\ \ \ \ \ \
| | |_|_|/ /
| |/| | | | |
|
| | |_|/ /
| |/| | | |
|
|\| | | | |
|
| | |/ /
| |/| |
| | | |
| | | | |
Improved version.
|
|\| | |
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
May not set orphan symbol values to anything meaningful, but must be
allowed to unset an orphan value (which is already unset) so that
when reaming a symbol table ordinary value delete/unset functions can
be called.
So fixed the assert which was disallowing all value changes for
orphans, in symbol_set_value().
|
| |\| |
|
|\ \ \
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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()
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* md5.c
* md5_calc(): If building on little endian then X
will be 'const uint32_t' which causes compiler
warning in code that never gets used. Just move
the endif to make sure code is not checked.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* table.c: general type safety and compiler help:
* maskbit[]: become const
* route_node_match(): take const args
* route_node_match_ipv4(): idem
* route_node_match_ipv6(): idem
* check_bit(): idem, plus adjust local vars typing
|
| | | |
|
| | |
| | |
| | |
| | | |
heasley: I've used this for a while to track usage.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Introduced separate types for qtime_mono_t and qtime_real_t, to
distinguish the time base of a given value.
Revised all users of timeouts so that they are all expressed as
qtime_mono_t values, so are all Quagga monotonic time based.
Revised qpt_cond_timedwait() so that all condition variables use the
same timebase (CLOCK_MONOTONIC if available, by default). Now all
timeout times are qtime_mono_t, and are converted to whatever the
condition variable is set to, if necessary.
Added explicit timeout to mqueue.
Fixed qps_pselect() to zeroise result vectors if no fds are
reported pending -- seems the O/S does not do this.
|
| | |
| | |
| | |
| | | |
mnum, not mbits.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Also, added testing for qps_make_super_set_map() to simulate wide
range of little-/big-endian word sizes and forwards/backwards bit
numbering.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Tidied up and implemented qps_selection_validate() as a debug aid.
|
| | | |
|