| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
the vty_*prepend* family can be used to reduce the amount of output
produced by "show running-config" and "write ...". it buffers output in
struct vty->prepend (1024 bytes) and outputs it when vty_out is called.
if vty_out isn't called, it can be removed with vty_unprepend later.
applied on zebra and ospfd to get rid of empty interface blocks.
|
| |
| |
| |
| |
| |
| |
| |
| | |
well, turns out FreeBSD and NetBSD don't like waiting for a negative
amount of time... and there i was hoping for a time machine. though
Linux doesn't seem to have a problem with negative times...
interesting...
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| | |
blackhole support was horribly broken. cleanup by removing blackhole
stuff from ZEBRA_FLAG_*, instead add a "zflags" field inside struct rib.
introduces support for "prohibit" routes (Linux/netlink only)
also clean up blackhole options on "ip route" vty commands.
|
| |
| |
| |
| |
| |
| |
| | |
FLAG_BLACKHOLE is used for different things in different places. remove
it from the zclient API, instead indicate blackhole routes by
ZAPI_MESSAGE_BLACKHOLE, which is converted to the proper zapi indication
by zapi_ipv4_route()
|
|\ \
| | |
| | |
| | |
| | | |
Conflicts:
lib/thread.c
|
| | |
| | |
| | |
| | |
| | |
| | | |
* workqueue.c: (work_queue_run) Err more on the side of keeping granularity
down, by being more conservative about increasing it.
Also, fix mispelling.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* (general) this can be useful when investigating thread latency problems,
when you don't want to have to restart a daemon between tests.
* thread.c: (cpu_record_(hash_)clear) wipe the stored thread cpu history
data, according to the filter, similar to the vty print code.
(clear_thread_cpu_cmd) new command to clear data.
* thread.h: export new command
* command.c: install it
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* thread.c: (thread_fetch) the current scheduler will service events
indefinitely, ignoring I/O and timers, so long as there are events.
In other words, events can crowd out I/O and timers. In theory this
shouldn't be a huge problem as events are generated only by timers
and I/O, however in practice it means normal-load behaviour is not as
useful a predictor of high-load behaviour as it should be.
Fix this by considering all the kinds of threads, in every run of the
scheduler. For any given run, we prioritise events, however across
runs the scheduler should be fair.
This has been observed to give more stable inter-packet times in
testing of ospfd (i.e. lower std-dev).
(thread_process) new heler to queue all the given threads onto the ready
list
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
If the vty_serv_sock_addrinfo is being used, then vty_serv_sock_family
is unsed. Fix by adjusting ifdef/else/endif
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Gcc now warns if function that takes printf style formatting is
passed a non-constant string. This avoid issues when a format character
is entered in some command.
Signed-off-by: David Lamparter <equinox@diac24.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch started while looking at the compiler aliasing warnings
from FIFO_HEAD() in BGP. Then I realized the FIFO code was only
being used in BGP, so it made sense to move it from zebra to
BGP. In the process convert from macro's to inline and add more
type safety.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
cleans up a few items with error reporting at startup:
- Line numbers are now reported alongside error text
- All errors now go to stderr instead of some stderr and some stdout
- The vty buffer is flushed so that errors now come out in the right order
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
cherry-diff-picked from Paul's rib_reform branch
Signed-off-by: David Lamparter <equinox@diac24.net>
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
lib/route_types.txt
|
| | | | | |
|
| |\ \ \ \
| | |_|_|/
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
configure.ac
lib/zebra.h
vtysh/vtysh.c
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
|\ \ \ \ \
| | |_|_|/
| |/| | | |
|
| |\ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Conflicts:
ospfd/ospfd.c
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Use interface <ifname>
"unnumbered" command to set unnumbered mode.
"no unnumbered" will clear it.
Changed to use *_FLAG macros by David Lamparter.
Cc: David Lamparter <equinox@diac24.net>
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Did some simple optimizations to reduce the number
of instructions in the hot path for both fletcher_checksum()
and in_cksum().
|
|\ \ \ \ \
| | |_|_|/
| |/| | | |
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* command.c: (cmd_deopt) helper to extract the inside argument string from
an optional argument.
(cmd_match) Consolidate matching code from cmd_filter_by_* to here.
Use cmd_deopt to match on the /inner/ argument of an optional string,
rather than treating optional arguments as matching pretty much any
string.
(cmd_filter) consolidate cmd_filter_by_* to here, and use cmd_match.
Further, do a two-pass filter, to make use of the fact that we know
the "strongest" match (e.g. range-match args beat variables) and can
filter out weaker ones.
Along with ability to match on inside of optional arguments, this makes
our command definitions more powerful, and should allow us to avoid
much redundancy in command defs.
(is_cmd_ambiguous) look inside optional args, for better matching.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
Conflicts:
lib/sockunion.c
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
On BGP write, use TCP_CORK to provide hints to kernel about TCP buffering.
This will cause BGP packets to occur in bigger chunks (full size MTU),
improving performance and getting rid of one of the problems reported
in the UNH BGP conformance test.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The fd_set exceptfd is never used by any Quagga thread.
According to documentation it is only meaningful for out of band
data, and no routing protocol uses out of band data. It saves some small
amount of kernel overhead to not use it.
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
The one place this was being used in BGP is now gone,
can remove deprecated interface.
|
|\ \ \ \ |
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Implement isis circuit md5 authentication
* Replace command "isis passwd" with "isis passwd {clear|md5}"
* Verify HMAC MD5 on ISIS Hello PDUs
* Add HMAC MD5 authentication to md5.h/md5.c from RFC2104
|
|\ \ \ \ |
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
prefix2sockunion converts a struct prefix* to a union sockunion *;
prefix_common_bits counts the number of common bits in the prefix's
address part.
|
|\ \ \ \ |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
times(2) is monotonic, use it to calculate relative_time
and scale the value using sysconf(_SC_CLK_TCK);
|
| |/ / /
| | | |
| | | |
| | | |
| | | | |
Exporting a variable is bad practise and since
recent_time isn't used, make it static.
|
| | | | |
|
| |/ /
|/| | |
|
| | |
| | |
| | |
| | |
| | |
| | | |
this uses the path_state helper for determining the path of quagga's
zserv.api socket. this allows for running multiple instances of zebra
each with its own interface.
|
| | |
| | |
| | |
| | |
| | |
| | | |
path_state and path_config return full path names to configuration /
state files. path_set_namespace can be used to include a namespace part
into the paths returned.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
fetch the address preference value from the kernel through
SIOCGIFADDRPREF and pass it to quagga through connected_add_ipv4,
which stores it in struct connected->preference.
IPSRCSEL is a NetBSD kernel option(4), documented in in_getifa(9) and
is available since NetBSD 4.0 but not enabled in default GENERIC.
|
| | |
| | |
| | |
| | |
| | | |
add struct connected "scope" field, fill it from kernel data and display
it in "show interface" address list.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
getaddrinfo returns a list of socket parameters for listening. it
will contain both IPv4 and IPv6 listening sockets. unless we use
IPV6_V6ONLY on the IPv6 ones, only the socket listed first will
work. if the IPv4 one came first, the IPv6 one would get an
"Address in use" error.
this functionality was already present for bgpd and its listening
sockets. as it is needed for vtys as well, make it a common helper.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
this replaces most occurences of routing protocol lists by preprocessor
defines from route_types.h. the latter is autogenerated from
route_types.txt by a perl script (previously awk). adding a routing
protocol now is mostly a matter of changing route_types.txt and log.c.
|
|/ /
| |
| |
| |
| | |
libzebra uses capability functions; some systems require libcap
for linking libzebra therefore
|