| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Advance version to 0.99.20ex25b.
Bug fixes:
* when closing a vty, if close() returned an error, the vtys would
fall into a loop trying to recover.
This was found on FreeBSD, which will return ECONNRESET on close(),
which is not standard POSIX behaviour.
* when closing a vty in response to EPIPE or ECONNRESET, managed to
leave the vty mutex locked.
This stopped the Routing Engine *dead* on the next CLI command
that required the Routing Engine. SIGTERM/SIGINT would not
stop bgpd -- a SIGKILL would be required.
Other changes:
* toned down the error reporting of EPIPE in the vty -- so no
longer looks like an error...
...closing a vty by "exit" command is logged as "closed"
...closing a vty in response to the client closing their end of
the connection is logged as "terminated: terminal closed",
and no longer logs an EPIPE error.
* changed error reporting on close() and shutdown() for vty, so
that nothing is logged if an i/o error has already logged...
...so that redundant error messages are suppressed.
* applied slightly finer jittering to bgpd timers.
* work in progress on new vtysh.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Logging:
* added "debug bgp io" -- to log all BGP Engine I/O, with the
option to log input or output only.
This is similar to "debug bgp update", but that affects the
Routing Engine, while this affects the BGP Engine.
* reviewed and updated "debug bgp fsm".
The fsm logging now covers all aspects of the fsm, which is
all in the BGP Engine.
Any nominally fsm logging in the Routing Engine is now "event"
logging.
Added collision resolution to fsm logging.
Dovetailed fsm and keepalive logging.
* removed logging of route advertisment timer and withdraw
events.
pthread and nexus handling:
* qpt_thread object created to encapsulate a pthread, with means
to keep track of existing pthreads and their cpu usage.
This is now used instead of the list of qpnexus for the
watch-dog.
* added explicit qpt_finish() and call from qexit().
Collects up and destroys all qpt_thread -- including any
"detached" qpt_thread.
* changed qpt_thread_signal() to qpt_thread_raise()
Now takes qpt_thread object (not pthread_t) and also is now
agnostic about qpthreads_enabled.
Work in progress -- pthread handling and debug improvements
Logging:
* added "debug bgp io" -- to log all BGP Engine I/O, with the
option to log input or output only.
This is similar to "debug bgp update", but that affects the
Routing Engine, while this affects the BGP Engine.
* reviewed and updated "debug bgp fsm".
The fsm logging now covers all aspects of the fsm, which is
all in the BGP Engine.
Any nominally fsm logging in the Routing Engine is now "event"
logging.
Added collision resolution to fsm logging.
Dovetailed fsm and keepalive logging.
* removed logging of route advertisment timer and withdraw
events.
pthread and nexus handling:
* qpt_thread object created to encapsulate a pthread, with means
to keep track of existing pthreads and their cpu usage.
This is now used instead of the list of qpnexus for the
watch-dog.
* added explicit qpt_finish() and call from qexit().
Collects up and destroys all qpt_thread -- including any
"detached" qpt_thread.
* changed qpt_thread_signal() to qpt_thread_raise()
Now takes qpt_thread object (not pthread_t) and also is now
agnostic about qpthreads_enabled.
* tidied up pthread attribute and status handling, to cope with
a wider variety of pthread implementations, and to lay ground-
work for more pthreads and more subtle scheduling.
Logging at pthread start up provides more information about
what the local implementation supports.
Flags up some issues with FreeBSD -- in particular broken
pthread CPU clock :-(
* changed handling of "thread specific" variables, so that is
now also qpthreads_enabled agnostic.
* added tests in configure.ac to identify when:
pthread_attr_getstack() pthread_attr_setstack()
pthread_attr_get_np() pthread_getattr_np()
are available. (For FreeBSD, at least, also need to know
whether to include <pthread_np.h>.)
Others:
* added "NO_RETURN" macro for __attribute__((noreturn))
or local equivalent.
* added qfb_nam_t -- a shorter general purpose fixed
length sting object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The objective is to (as gracefully as possible) deal with outgoing UPDATE
messages which simply do not in the maximum size BGP message. This can
happen if very large AS_PATH or Community attributes come in, and are
then extended. (Sending an UPDATE to an AS2 speaking peer can create
a complete second copy of the AS_PATH !) Previous versions of Quagga
would crash under these circumstances.
Recent version were changed to tolerate and detect oversize messages.
Any oversize message is logged as an error and discarded.
This version will also withdraw prefixes if the selected route simply
cannot be advertised.
This version also corrects the handling of messages which are limited to
the maximum BGP message size -- in particular UPDATE messages which
carry a large number of IPv4/Unicast prefixes. (This was broken by the
earlier efforts to handle oversize messages.)
Changes in this commit:
* update version to 0.99.20ex24b
* where a set of attributes is too big to fit into a BGP message, or
so big that not even one prefix will also fit into a BGP message,
the following steps are now taken:
- the BGP message is discarded and an error logged (as in other
recent versions -- Quagga does not crash).
- any prefixes which should have been advertised with the (broken)
attributes will be withdrawn, if they have been advertised earlier
with valid attributes.
A further error is logged, listing the affected prefixes.
- prefixes which are suppressed in this way are not counted as
having been sent.
At present there is no "show" command which will show which prefixes have
been suppress -- TBA.
* for all AFI/SAFI announce as many withdrawn prefixes as will fit in a
BGP message.
Previously, all AFI/SAFI other than IPv4/Unicast would send one withdrawn
prefix per message.
(This is still the case for announcements. It seems unlikely that
many IPv6 prefixes will have the same attributes... so this does not
seem worth fixing immediately.)
* ensure that NOTIFICATION message cannot exceed the maximum length of a
BGP message, no matter how much data is sent (!).
* where IPv4/Unicast prefixes share the same attributes, they are now
announced in the order received.
Previously, when prefixes were added to the list hung off the
'struct bgp_advertise_attr', they were in LIFO order.
* add SAFI name table.
* log pthread attributes when creating a pthread.
* fix scheduling of withdrawn prefixes to reduce number of BGP messages
generated.
Bug fixes:
* fix discard of invalid IPv6 link-local nexthop (recent bug).
* where amount of information that is put into a BGP message is limited by
the maximum message size, fix so that this works again. (This was
broken recently.)
* set "Bottom of Stack" bit in MPLS VPN "tag" in MP_REACH and MP_UNREACH
outgoing attributes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
-Wunused-but-set-variable throws up a number of errors, this patch
removes some of thos in bgpd, lib and zebra.
Fix crash in vty when using ">*" /dev/null output pipe.
Work in Progress (WIP):
1) adding "Watch-Dog" pthread to keep an eye on all other pthreads
and state of mutexes etc.
2) creation of Integrated Configuration in vtysh.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* fix stream_put() to accept NULL src (again).
* changed how vty terminal reports time-out and end-of-file,
and made --more-- show the same as ordinary cli.
* tighten on or two stream functions, to cope if for some
reason the getp > endp or endp > size.
* update documentation in vio_lines.c
* fixed (potential) bug which would have tripped up --more--
if were to be required while outputting notification for a
cancel operation.
* as a new command loop is set up, make sure all start in
vst_cmd_running_executing, so that output will be dispatched.
* fix uty_std_out_push() and uty_vtysh_out_push to take notice
of vst_cmd_running and vst_cmd_executing and change to
vst_cmd_complete as required.
* fix handling of hold_mark in VOUT_TERM obuf an line control.
* fix various state related issues for vtysh server and the
vtysh itself.
* when vtysh connects to a daemon, the daemon responds with
its name and version number.
TBD: the vtysh to check that version is as expected !
* clarified handling of errors in vtysh... distinguishing
errors reported by the client daemon, and errors in the
mechanics of talking to the client daemon.
~
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NB: this is a partial interim version -- NOT for production.
Reinstate vtysh. In bgpd: cope better with generating oversize messages.
The "pipework" branch is no more. There is now "euro_ix" and "euro_ix_b",
where 'b' stands for 'bleedin'. The "pipework" is currently in 'bleedin'.
Version updated to: 0.99.18ex20b
Major changes in this commit:
* modified bgpd to avoid crashing if an oversize message is created.
At present, any oversize messages are simply discarded. This may be a
mistake... since it is possible that some routes that should have been
withdrawn are not. TBA.
The stream lib facilities have been overhauled to may this easier.
* restoring vtysh.
At present the vtysh is thought to work, except that it does not
currently create integrated configuration files.
For the time being, *only* the following compile:
lib, bgpd, zebra, vtysh, tests
All other daemons will fail to compile, and must be disabled.
|
|
|
|
|
|
|
|
|
| |
Release: 0.99.18ex15p -- Pipework Branch
Also fixes issue with unknown attributes -- does not release them prematurely.
Contains the "bgpd: New show commands for improved view and address family
support", which is post 0.99.18. (But not RFC 5082 GTSM.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
modified: bgpd/bgp_connection.c
modified: bgpd/bgp_debug.c
modified: bgpd/bgp_engine.h
modified: bgpd/bgp_main.c
modified: bgpd/bgp_packet.c
modified: bgpd/bgp_peer.c
modified: bgpd/bgp_route.c
modified: bgpd/bgp_routemap.c
modified: bgpd/bgp_session.c
modified: bgpd/bgp_vty.c
modified: bgpd/bgpd.c
modified: bgpd/bgpd.h
modified: configure.ac
modified: isisd/dict.h
modified: isisd/isis_misc.c
modified: isisd/isis_routemap.c
modified: isisd/isis_spf.c
modified: lib/Makefile.am
modified: lib/command.c
modified: lib/command.h
modified: lib/command_execute.h
modified: lib/command_parse.c
modified: lib/command_parse.h
modified: lib/command_queue.c
modified: lib/command_queue.h
modified: lib/elstring.h
modified: lib/heap.c
modified: lib/if.c
modified: lib/if.h
modified: lib/keychain.c
modified: lib/keystroke.c
modified: lib/keystroke.h
modified: lib/list_util.c
modified: lib/list_util.h
modified: lib/log.c
modified: lib/log.h
modified: lib/memory.c
modified: lib/memory.h
modified: lib/memtypes.c
modified: lib/misc.h
modified: lib/mqueue.c
modified: lib/mqueue.h
deleted: lib/node_type.h
modified: lib/pthread_safe.c
modified: lib/qfstring.c
modified: lib/qiovec.c
modified: lib/qiovec.h
modified: lib/qpath.c
modified: lib/qpnexus.c
modified: lib/qpnexus.h
modified: lib/qpselect.c
modified: lib/qpthreads.h
modified: lib/qstring.c
modified: lib/qstring.h
modified: lib/qtime.c
modified: lib/qtime.h
modified: lib/qtimers.c
modified: lib/qtimers.h
modified: lib/routemap.c
modified: lib/symtab.h
modified: lib/thread.h
deleted: lib/uty.h
modified: lib/vector.c
modified: lib/vector.h
modified: lib/version.h.in
modified: lib/vio_fifo.c
modified: lib/vio_fifo.h
modified: lib/vio_lines.c
modified: lib/vio_lines.h
modified: lib/vty.c
modified: lib/vty.h
modified: lib/vty_cli.c
modified: lib/vty_cli.h
modified: lib/vty_io.c
modified: lib/vty_io.h
modified: lib/vty_io_basic.c
modified: lib/vty_io_basic.h
modified: lib/vty_io_file.c
modified: lib/vty_io_file.h
modified: lib/vty_io_shell.c
modified: lib/vty_io_term.c
modified: lib/vty_io_term.h
modified: lib/vty_local.h
modified: lib/vty_pipe.c
modified: lib/workqueue.h
modified: lib/zebra.h
modified: ospf6d/ospf6_lsa.c
modified: ripngd/ripngd.c
modified: tests/test-list_util.c
modified: tests/test-vector.c
modified: vtysh/vtysh.c
modified: vtysh/vtysh_config.c
|
| |
|
|
|
|
|
|
|
| |
Various bug fixes and improvements.
Running with a fair amount of debug/assert code, which must be
removed at some date.
|
|
|
|
| |
thread to run in. Add qlib_init stuff. Add -t parameter for "threaded".
|
| |
|
|
|
|
|
|
|
|
|
| |
* vtysh/vtysh.c: "end" should be printed at the bottom, not the top.
* vtysh/vtysh_config.c: PROTOCOL_NODE was not being handled, and thus was
being displayed at the top of a config, rather than in its rightful
place near the bottom.
Signed-off-by: Chris Caputo <ccaputo@alt.net>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* (global): Fix up list loops to match changes in lib/linklist,
and some basic auditing of usage.
* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES
* HACKING: Add notes about deprecating interfaces and commands.
* lib/linklist.h: Add usage comments.
Rename getdata macro to listgetdata.
Rename nextnode to listnextnode and fix its odd behaviour to be
less dangerous.
Make listgetdata macro assert node is not null, NULL list entries
should be bug condition.
ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
with for loop, Suggested by Jim Carlson of Sun.
Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
"safety" of previous macro.
LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
distinguish from the similarly named functions, and reflect their
effect better.
Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section
with the old defines which were modified above,
for backwards compatibility - guarded to prevent Quagga using it..
* lib/linklist.c: fix up for linklist.h changes.
* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single
scan of the area list, rather than scanning all areas first for
INTER_ROUTER and then again for INTER_NETWORK. According to
16.2, the scan should be area specific anyway, and further
ospf6d does not seem to implement 16.3 anyway.
|
|
|
|
|
|
|
|
|
|
| |
* (global) update all c files to match the lib/vector.h rename of
(struct vector).active to max, and vector_max macro to
vector_active.
* lib/vector.h: Rename to (struct vector).max to slightly less
confusing active, for the number of active slots, distinct from
allocated or active-and-not-empty. Rename vector_max to
vector_active for same reason.
|
|
|
|
|
|
|
|
| |
quarantees that they will appear after SERVICE_NODE to make sure
that encrypted passwords will work ("service password-encryption"
command).
[backport candidate]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
reorganization of this spagetti will follow soon.
|
|
|
|
| |
* vtysh_config.c: Fix up strlen to use correct string.
|
| |
|
|
|
|
| |
Fix from hasso tepper <hasso@linux.ee>
|
|
|