Age | Commit message (Collapse) | Author |
|
2006-08-25 Paul Jakma <paul.jakma@sun.com>
* (general) Bug #134. Be more robust to backward time changes,
use the newly added libzebra time functions.
In most cases: recent_time -> recent_relative_time()
gettimeofday -> quagga_gettime (QUAGGA_CLK_MONOTONIC, ..)
time -> quagga_time.
(ospf_make_md5_digest) time() call deliberately not changed.
(ospf_external_lsa_refresh) remove useless gettimeofday, LSA
tv_orig time was already set in ospf_lsa_new, called via
ospf_external_lsa_new.
|
|
2006-08-25 Paul Jakma <paul.jakma@sun.com>
* thread.c: (general) Add support for monotonic clock, it may still
jump forward by huge amounts, but should be immune to going
backwards. Fixes bug #134.
(quagga_gettimeofday_relative_adjust) helper, does what name
says - adjusts gettimeofday based relative timer.
(quagga_gettimeofday) helper to keep recent_time up to date.
(quagga_get_relative) helper, update and getch the relative
timer using gettimeofday(). POSIX CLOCK_MONOTONIC is also
supported, but the code is not enabled yet nor tested.
(quagga_real_stabilised) helper, retrieve absolute time but
stabilised so as to never decrease.
(quagga_gettime) Exported interface, analogous to POSIX
clock_gettime() in interface, supporting several clocks.
(quagga_time) Exported interface, analogous to traditional
time(), will never decrease.
(recent_relative_time) Convenience function to retrieve
relative_time timeval, similar to existing recent_time absolute
timeval, for when an approximately recent value will do.
(remainder) Update to use above helpers.
(thread_getrusage) Previously was a macro, but needs to be
a function to twiddle with thread.c private stuff.
* thread.c: Point the GETRUSAGE macro at previous function.
Export quagga_gettime, quagga_time and recent_relative_time for
general use.
|
|
2006-08-03 Paul Jakma <paul.jakma@sun.com>
* ospf_packet.c: (ospf_make_db_desc) Implement
draft-ogier-ospf-dbex-opt DB-exchange optimisation.
|
|
2006-08-03 Paul Jakma <paul.jakma@sun.com>
* ospf_packet.c: (ospf_make_db_desc) Unset the DD More bit
after constructing the packet, if appropriate.
(ospf_db_desc_proc) Speed up Exchange, slave should raise
ExchangeDone earlier, as RFC mandates, by forming its reply
before deciding whether both sides are done, avoids a
needless round of empty DD packet exchanges at the end of
Exchange, hence speeding up ExchangeDone.
(ospf_db_desc) use UNSET_FLAG macro.
|
|
2006-08-04 Paul Jakma <paul.jakma@sun.com>
* ospf_lsdb.c: (ospf_lsdb_delete_entry) new function, consolidate
exact same functionality replicated in other functions.
(ospf_lsdb_add) Strip out code by using ospf_lsdb_delete_entry.
(ospf_lsdb_delete) ditto.
(ospf_lsdb_delete_all) ditto.
|
|
2006-08-06 Paul Jakma <paul.jakma@sun.com>
* rtadv.h: depends on interface.h, so should include it.
|
|
2006-08-06 Paul Jakma <paul.jakma@sun.com>
* interface.h: (ifstat_update_proc) declaration should match
ifstat_update_sysctl really, which is to not return status, as
such status is not used anywhere.
* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values
consistent with each other and their declarations, ie:
(void) (*) (void).
|
|
2006-08-06 Paul Jakma <paul.jakma@sun.com>
* bgp_aspath.c: (aspath_loop_check) Fix the typo-bug which
essentially had disabled this check. Problem reported by
Bartek Kania <mrbk@gnarf.org> in [quagga-users 7388].
* aspath_test.c: (validate) Fix the sense of the aspath_loop_check,
which was the wrong way around and had actually been testing for
aspath_loop_check to be buggy.
|
|
2006-08-01 Paul Jakma <paul.jakma@sun.com>
* irdp_main.c: (irdp_advertisement) free the stream here, when done,
right under where it was allocated so it's blindingly obvious
it's correct. This possibly fixes a very slow leak of streams in
zebra.
* irdp_packet.c: (send_packet) don't free the stream here as
it's hard to tell if right, plus an error case seemed to
returning before free anyway.
|
|
2006-08-04 Paul Jakma <paul.jakma@sun.com>
* misc_null.c: Add ifstat_update_sysctl, add another required
header.
|
|
2006-08-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* misc_null.c: Must include header files to get older versions of gcc
to process the #pragma statements properly.
|
|
2006-07-28 Paul Jakma <paul.jakma@sun.com>
* main.texi: link-detect works on Solaris too.
* ospfd.texi: Twiddle around with anchors a bit more.
Clarify how setting MD5 auth by area and by interface interact,
and add cross-references, as well as to the required
command for setting key material.
|
|
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* quagga.texi: Remove unused index definitions
Add an Index node - for the concept index.
* routeserver.texi: Set exampleindex to 0, so the example configs
with long IPv6 addresses stand better chance of fitting.
* overview.texi: 'Supported RFC' -> 'Supported RFCs'
Remove paragraph indentation - texinfo does that.
Revise the supported OS list slightly.
Remove the IPv6 stack list, seems very dated and irrelevant.
Revise the 'How to get Quagga' section.
* ospfd.texi: minor tweaks: add some anchors, fix some minor
format issues.
Revise the help for 'abr-type'.
Note that text authentication is unwise, recc'd MD5.
Add some extra text for redistribute and passive-interface,
about how latter can substitute for redist connected.
|
|
|
|
2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospfd.c: (ospf_router_id_update) Fix and document the algorithm for
selecting the router ID: if there is not a statically configured ID,
then stick to the most recent value to avoid disruptive changes.
This should fix bug #288.
|
|
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* rib.h: (struct rib) Add a route_node rn_status flag field,
this has to be copied every time head RIB of a route_node
changes.
Remove the rib lock field, not needed - see below.
Add a status field for RIB-private flags.
* zebra_rib.c: Add a global for the workqueue hold time, useful
for testing.
(general) Fix for bug #268. Problem originally
detailed by Simon Bryden in [quagga-dev 4001].
Essentially, add/delete of a RIB must happen /before/ the
queue. Best-path selection (ie rib_process) and reaping of
freed RIBs can then be done after queueing. Only the route_node
is queued - no important RIB state (i.e. whether a RIB is to be
deleted) is queued.
(struct zebra_queue_node_t) Disappears, no longer need to
track multiple things on the queue, only the route_node.
(rib_{lock,unlock}) removed, RIBs no longer need to be
refcounted, no longer queued.
(rib_queue_qnode_del) Removed, deleted RIBs no longer deleted
via the queue.
(rib_queue_add_qnode) deleted
(rib_queue_add) Only the route_node is queued for best-path
selection, we can check whether it is already queued or
not and avoid queueing same node twice - struct rib * argument
is not needed.
(rib_link/unlink) (un)link RIB from route_node.
(rib_{add,del}node) Front-end to updates of a RIB.
(rib_process) Reap any deleted RIBs via rib_unlink.
Unset the route_node 'QUEUED' flag.
(General) Remove calls to rib_queue_add where add/del node was
called - not needed, update calls where not.
Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes
|
|
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* debug.{c,h}: Add 'debug zebra rib' and 'debug zebra rib queue'.
|
|
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,
useful for testing zebra code that calls such methods.
* {redistribute,misc}_null.c: Dummy/Null methods, as above. But
for zclient, and for various misc functions.
* test_main.c: Test harness for zebra, currently just to test the
RIB.
* Makefile.am: Build testzebra using above.
* zebra_rib.c: Add a global for the workqueue hold time, useful
for testing.
|
|
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* bgpd.c: (peer_delete) Ensure freed buffers can not be
accidently reused. A potential fix for bug #287.
|
|
2006-07-27 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vtysh.1: Document new options -d and -E, and note that now multiple
-c options may be supplied, with embedded linefeed now supported.
In BUGS section, remove warning about vtysh causing a daemon
to freeze, since this has been fixed.
* vtysh_main.c: (usage) Add new -d and -E options. And note that
-c can be used multiple times, possibly with embedded linefeeds.
(longopts) Add new -d and -E options.
(main) Add new -d and -E options, and create a linked list to
support multiple -c options. Do not call vtysh_connect_all until
after vtysh_read_config(config_default) and vtysh_auth have
succeeded. This prevents the vtysh.conf file from configuring
any daemons, and it ensures that authentication has been passed
before we send any commands to any daemons. Call vtysh_connect_all
with any daemon name supplied with -d. If it is unable to connect
to any daemons, issue an error message and exit immediately.
When used in -c mode, call vtysh_execute("enable") before
executing the commands in order to match interactive behavior.
And detect embedded linefeed chars in -c commands and break them up
appropriately.
* vtysh.h: (vtysh_connect_all) Fix proto to reflect new
daemon_name argument, and that it now returns an integer -- the
number of daemons to which we were able to connect.
* vtysh.c: (vtysh_connect_all) Add a new daemon_name argument.
If supplied, connect only to that daemon. And return
the number of daemons to which we were able to connect.
(vtysh_prompt): Performance enhancement -- make struct utsname
static so we call uname to get the hostname only once.
|
|
2006-07-27 Rumen Svobodnikov <rumen@telecoms.bg>
* connected.c: (connected_up_ipv4) interface connected routes always
go to table main (or otherwise they cannot be used by linux as
nexthops)
* zserv.c: (zread_ipv4_add) send route to the correct routing table
* zebra_rib.c (static_install_ipv4) set routing table
|
|
2006-07-26 Paul Jakma <paul.jakma@sun.com>
* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer
to the LSA to be 'unlocked', so that, if the LSA is freed, the
callers pointer to the LSA can be NULLed out, allowing any further
use of that pointer to provoke a crash sooner rather than later.
* ospf_*.c: (general) Adjust callers of ospf_lsa_unlock to match
previous. Try annotate 'locking' somewhat to show which 'locks'
are protecting what LSA reference, if not obvious.
* ospf_opaque.c: (ospf_opaque_lsa_install) Trivial: remove useless
goto, replace with return.
* ospf_packet.c: (ospf_make_ls_ack) Trivial: merge two list loops,
the dual-loop predated the delete-safe list-loop macro.
|
|
2006-07-25 Paul Jakma <paul.jakma@sun.com>
* ospf_neigbor.h: (struct ospf_neighbor) Add some additional
neighbour state statistics fields, timestamps for progressive
and regressive state changes, and pointer to event string
for the latter state change.
* ospf_nsm.c: (nsm_notice_state_change) Update new state changs
history as required.
* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print out above
new per-neighbour state change stats.
|
|
2006-07-25 Paul Jakma <paul.jakma@sun.com>
* thread.h: (struct thread) Add a cache pointer to the struct
cpu_thread_history, if it is known - saving hash lookup on
each thread_call.
* thread.c: (thread_call) Cache the pointer to the
cpu_thread_history, so that future thread_calls of same
thread can avoid the hash_lookup.
|
|
2006-07-10 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (ospf_nsm_event) Record state change timestamp
and event in nbr struct.
* ospf_neighbor.h: (struct ospf_neighbor) Add fields to record
timestamp of last NSM change and event.
* ospf_vty.c: (show_ip_ospf_neighbor_detail_sub) Print
last state change timestamp and event, if available.
|
|
2006-07-10 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (nsm_notice_state_changes) Move state change
logging code to new func to declutter nsm_change_state and
ospf_nsm_event.
Log event with AdjChange, it's useful to know.
(nsm_change_state) move adjchange and snmp logging to previous.
(ospf_nsm_event) call nsm_notice_state_changes from here.
Move the debug message to entry of function, so it gets out
even if something goes wrong.
|
|
2006-07-10 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (nsm_change_state) call nsm_clear_adj for all
adjacency losses, hence removing need for nsm_reset_nbr.
(nsm_reset_nbr) kill it, clear_adj in previous does fine.
(nsm_kill_nbr,nsm_start) remove nsm_reset_nbr call.
(ospf_nsm_event) Allow NSM function to be NULL, this along with
removal of nsm_reset_nbr, allows a bunch of now useless functiosn
to be removed.
Remove some useless variables.
(nsm_ignore) now useless, remove.
(nsm_bad_ls_req) ditto
(nsm_seq_number_mismatch) "
(nsm_oneway_received) "
(nsm_inactivity_timer) "
(nsm_ll_down) "
(NSM) replace removed action functions with NULL.
|
|
2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning
message to include interface name and conflicting prefix lengths.
|
|
2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vty.c: (vty_log_out) Do not call vty_close, because this could
result in a parent function's accessing the freed memory.
Instead, set status VTY_CLOSE and call shutdown(vty->fd, SHUT_RDWR).
And add a comment on vty_close.
|
|
2006-07-10 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vty.c: (vty_log_out, vty_read, vty_flush, vtysh_flush, vtysh_read)
After an I/O error, must set vty->monitor to 0 before calling
zlog_warn, otherwise an infinite recursion could occur
(since zlog_warn triggers a message to be written to the vty,
and that in turn triggers another error message when it fails, etc.).
|
|
2006-07-07 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.h: Add a NSM_Deleted neighbour state, to act as dummy
state indicating the neighbour is to be deleted.
* ospf_nsm.c: (general) Use the NSM_Deleted state to delete
neighbours, thus allowing code to be slightly more obvious
in its flow.
(nsm_timer_set) Add NSM_Deleted. Add another timer the code
missed.
(nsm_kill_nbr) No need for special case call to nsm_change_state
anymore.
Make the assert and error-handling for same case more readable
(Andrew Schorr)
Remove the call to ospf_nbr_delete, nsm_change_state can do
this generally now via NSM_Deleted.
(struct ... NSM) Add the dummy NSM_Deleted state, the 3 events
that can lead to nsm_kill_nbr all now transition the NBR to
NSM_Deleted and the general change_state function can be left
to do the work.
(ospf_nsm_event) Special casing of events and early-return can
be removed now.
On transition into Deleted, delete the nbr.
* ospf_dump.c: (ospf_nsm_state_msg) Add Deleted.
|
|
2006-07-06 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr
being deleted, requires early-return too. Likely explains
some crash reports after interface events.
|
|
2006-07-04 Paul Jakma <paul.jakma@sun.com>
* quagga.info: remove auto-generated file. It will still be
present in dist tarballs, so shouldn't affect anyone but
direct users of CVS. Required texinfo version should be
widely available.
* .cvsignore: ignore quagga.info
|
|
2006-07-04 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (general) Various small cleanups from Andrew's
review of last set of patches.
(nsm_timer_set) Loading, Full and default can share
same code too.
(nsm_should_adj) Can just be one big OR.
(nsm_twoway_received) Collapse into return statement.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* ospf_lsa.c: (ospf_translated_nssa_refresh) CID #13.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (nsm_clear_adj) clear adjacency related state for a
neighbour, needed for some state changes from > ExStart down
to ExStart or less, which need not go through nsm_reset_nbr.
(nsm_reset_nbr) move code to former. Should be static.
(ospf_nsm_event) Remove long dead code.
Use nsm_clear_adj for state changes that take down
adjacencies to TwoWay/ExStart.
(nsm_kill_nbr) Oops, action function shouldn't try return
1 for error.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (nsm_timer_set) ls_req timer should be OFF in
early states.
Compact several identical sections.
Set inactivity timer to OFF for Down, for documentary purposes.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (ospf_nsm_event) Don't allow action functions to
change next_state if the NSM tables do not indicate
next_state is conditional, log warning if one tries -
existing code appears fine though.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (nsm_should_adj) New function, just consolidate the
10.4 adjacency check from nsm_twoway_received/nsm_adj_ok.
(nsm_twoway_received/nsm_adj_ok) Use former.
|
|
2006-07-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vty.c: (vty_log_out) Debug messages to terminal vty sessions
should include timestamps.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not
proceed if addr is NULL.
* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check
required arguments are supplied for the given nexthop type.
|
|
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain
bits of state from stop to start, as they may be used via
peer references on clearing queues..
|
|
2006-06-29 Paul Jakma <paul.jakma@sun.com>
* rip_zebra: (general) convert redistribute commands to use
the auto-generated defines.
|
|
- entry was left in wrong order, according to date.
|
|
2006-06-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_vty.c: (show_ip_ospf_neighbor_id) Should show all instances
of that neighbor (since it may appear on multiple interfaces)
instead of bailing out after showing the first match.
|
|
2006-06-28 Paul Jakma <paul.jakma@sun.com>
* memory.c: Fix typo in cpp conditional around malloc.h, from
comment in bug #269.
|
|
2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_nsm.c: (nsm_twoway_received) When deciding whether to
change from state Init to ExStart, the test for whether the
neighboring router is DR or BDR should be against the
local router's notion of DR/BDR, not the neighbor's view.
|
|
2006-06-28 Erik Muller <erikm@internap.com>
* ospfd.h: Define 2 new struct ospf config flags:
OSPF_LOG_ADJACENCY_CHANGES and OSPF_LOG_ADJACENCY_DETAIL
* ospf_nsm.c (nsm_change_state): Log adjacency changes if
requested.
* ospf_vty.c (ospf_log_adjacency_changes): New command function
to implement ospf subcommand "log-adjacency-changes [detail]".
(no_ospf_log_adjacency_changes) Turn off log-adjacency-changes.
(show_ip_ospf) Show whether adjacency changes are logged.
(ospf_config_write) Add "log-adjacency-changes [detail]" to config.
(ospf_vty_init) Add ospf_log_adjacency_changes and
no_ospf_log_adjacency_changes.
* ospfd.texi: Document new ospf router subcommand
"log-adjacency-changes [detail]".
|
|
2006-06-27 Paul Jakma <paul.jakma@sun.com>
* route_types.awk: Fix previous commit. Forgot to remove the
printf of the bare/numeric route-type help string (empty string)
|
|
2006-06-27 Paul Jakma <paul.jakma@sun.com>
* route_types.awk: Remove setting the 'bare' numeric route type
in redist strings.
|