paul [Wed, 9 Feb 2005 15:51:56 +0000 (15:51 +0000)]
2005-02-09 Paul Jakma <paul.jakma@sun.com>
* (global) Update code to match stream.h changes.
stream_get_putp effectively replaced with stream_get_endp.
stream_forward renamed to stream_forward_getp.
stream_forward_endp introduced to replace some previous
setting/manual twiddling of putp by daemons.
* lib/stream.h: Remove putp. Update reference to putp with endp.
Add stream_forward_endp, which daemons were doing manually.
Rename stream_forward to stream_forward_getp.
lib/stream.c: Remove/update references to putp.
introduce stream_forward_endp.
ajs [Tue, 8 Feb 2005 15:59:16 +0000 (15:59 +0000)]
2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_interface.h: Reduce structure padding by putting new u_char
field multicast_memberships in a better spot (grouped with
other u_char fields type and state).
ajs [Tue, 8 Feb 2005 15:37:30 +0000 (15:37 +0000)]
2005-02-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_interface.h: Improve passive_interface comment. Add new
multicast_memberships bitmask to struct ospf_interface to track
active multicast subscriptions. Declare new function
ospf_if_set_multicast.
* ospf_interface.c: (ospf_if_set_multicast) New function to configure
multicast memberships properly based on the current
multicast_memberships status and the current values of the
ospf_interface state, type, and passive_interface status.
(ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is
now handled by ism_change_state's call to ospf_if_set_multicast).
(ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now
handled by ism_change_state).
* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave
the DRouters multicast group (now handled by ism_change_state's call
to ospf_if_set_multicast).
(ism_change_state) Add call to ospf_if_set_multicast to change
multicast memberships as necessary to reflect the new interface state.
* ospf_packet.c: (ospf_hello) When a Hello packet is received on a
passive interface: 1. Increase the severity of the error message
from LOG_INFO to LOG_WARNING; 2. Add more information to the error
message (packet destination address and interface address);
and 3. If the packet was sent to ospf-all-routers, then try
to fix the multicast group memberships.
(ospf_read) When a packet is received on an interface whose state
is ISM_Down, enhance the warning message to show the packet
destination address, and try to update/fix the multicast group
memberships if the packet was sent to a multicast address.
When a packet is received for ospf-designated-routers, but the
current interface state is not DR or BDR, then increase the
severity level of the error message from LOG_INFO to LOG_WARNING,
and try to fix the multicast group memberships.
* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for
any ospf interface that may have changed from active to passive.
(no_ospf_passive_interface) Call ospf_if_set_multicast for
any ospf interface that may have changed from passive to active.
(show_ip_ospf_interface_sub) Show multicast group memberships.
paul [Fri, 4 Feb 2005 23:42:41 +0000 (23:42 +0000)]
2005-02-04 Paul Jakma <paul@dishone.st>
* ripd.c: Untangle the construction of RIP auth data.
(rip_auth_prepare_str_send) new helper function, prepare
correct key string.
(rip_auth_simple_write) new helper, write out the
rip simple password auth psuedo-RTE.
(rip_auth_md5_ah_write) new helper, write out the
MD5 auth-header psuedo-RTE.
(rip_auth_header_write) new helper, write out correct
auth header data / psuedo-RTE.
(rip_auth_md5_set) rip out the memmove and writing of the
auth header psuedo-RTE. So that all that is left is to
write the trailing auth digest, and update digest offset
field in the original header.
(rip_write_rte) rip out writing of RIP header, writing of
simple auth data psuedo-RTE. Make it do what its name suggests,
write out actual RTEs.
(rip_output_process) remove the incorrect additional decrements
of rtemax. Prepare the auth_str, which simple or MD5 auth will
need. Move write out of RIP header and auth data to inside the
loop. Adjust paramaters as required.
ajs [Thu, 3 Feb 2005 19:22:05 +0000 (19:22 +0000)]
2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.c: (zlog_signal,zlog_backtrace_sigsafe) Eliminate use of fileno()
since it is not async-signal-safe.
(_zlog_assert_failed) Rewrite crashlog logic more compactly.
(zlog_set_file,zlog_reset_file,zlog_rotate) Update logfile_fd
for use in signal handler.
ajs [Thu, 3 Feb 2005 17:12:01 +0000 (17:12 +0000)]
2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* basic.texi: Add note about last-resort crash logging to /var/tmp
when file logging is not configured.
* quagga.info: updated build of autogenerated file
ajs [Thu, 3 Feb 2005 16:42:40 +0000 (16:42 +0000)]
2005-02-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.c: (syslog_sigsafe) Reduce scope of syslog_fd: it is accessed
inside this function only.
(open_crashlog) New function to open /var/tmp/quagga.<daemon>.crashlog
with flags O_WRONLY|O_CREAT|O_EXCL to save some crash info.
(zlog_signal,_zlog_assert_failed) Increase logging priority from
LOG_ERR to LOG_CRIT. If no file logging is configured, try to use
open_crashlog to create a crash logfile.
(zlog_backtrace_sigsafe) If a crashlog file descriptor is open,
dump a backtrace to that file.
ajs [Wed, 2 Feb 2005 18:38:48 +0000 (18:38 +0000)]
2005-02-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,
not for event ISM_InterfaceDown. And improve the message by
adding the interface flags.
* if.h: Declare if_flag_dump.
hasso [Wed, 2 Feb 2005 14:40:33 +0000 (14:40 +0000)]
* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,
bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
graceful-restart" commands added. Show numbers of individual
messages in "show ip bgp neighbor" command. Final pieces of graceful
restart.
hasso [Tue, 1 Feb 2005 21:30:04 +0000 (21:30 +0000)]
* bgp_attr.c, bgp_snmp.c, bgp_vty.c, bgpd.[ch]: Remove support for old
draft - ie. "neighbor version 4-" commands. Preserve dummy "neighbor
version" command as deprecated.
hasso [Tue, 1 Feb 2005 20:13:16 +0000 (20:13 +0000)]
* bgp_nexthop.c: Improve debug.
* bgpd.[ch], bgp_nexthop.c, bgp_snmp.c: Remove useless bgp_get_master()
function.
* bgp_packet.c: MP AFI_IP update and withdraw parsing.
* bgp_fsm.c: Reset peer synctime in bgp_stop(). bgp_fsm_change_status()
is better place to log about peer status change than bgp_event().
Log in bgp_connect_success().
* bgp_vty.c: Fix typo in comment.
* bgp_attr.c: Better log about unknown attribute.
ajs [Sat, 29 Jan 2005 18:19:13 +0000 (18:19 +0000)]
2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* buffer.h: Fix comment on buffer_getstr to reflect that it now
uses XMALLOC.
* buffer.c: (buffer_getstr) Use XMALLOC(MTYPE_TMP) instead of malloc.
* filter.c: (access_list_remark,ipv6_access_list_remark) Use
argv_concat instead of buffer_getstr.
* if.c: (interface_desc) Use argv_concat instead of buffer_getstr.
* plist.c: (ip_prefix_list_description,ipv6_prefix_list_description)
Use argv_concat instead of buffer_getstr.
* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
of buffer_getstr.
* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
returned by buffer_getstr.
(bgp_show_community) Must use XFREE instead of free on string
returned by buffer_getstr.
* bgp_routemap.c: (set_community) Must use XFREE instead of free
on string returned by buffer_getstr.
* bgp_vty.c: (neighbor_description) Use argv_concat instead of
buffer_getstr.
ajs [Sat, 29 Jan 2005 17:07:40 +0000 (17:07 +0000)]
2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling
zserv_privs.change.
* ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling
zserv_privs.change.
* ipforward_solaris.c: (solaris_nd) Save errno before calling
zserv_privs.change.
* irdp_main.c: (irdp_sock_init) Save errno before calling
zserv_privs.change.
ajs [Sat, 29 Jan 2005 15:52:07 +0000 (15:52 +0000)]
2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_packet.c: (ospf_packet_add) If oi->obuf is NULL, print
an error message and return.
(ospf_read) If the interface state is ISM_InterfaceDown, issue
a warning message and ignore the packet.
ajs [Fri, 28 Jan 2005 21:11:46 +0000 (21:11 +0000)]
2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vtysh.h: Remove obsolete VTYSH_INDEX_* defines. Fix many prototypes
for functions with no arguments (must specify argument list as void).
* vtysh.c: Enhance vtysh_client array to include the daemon's name
and bitmask and socket path (in addition to the fd). This allows
us to use loop constructs for various operations that need to be
applied to all client daemons, and it facilitates better error
messages. Also fix some prototypes with void argument lists.
(vclient_close) Issue a warning message indicating which daemon's
socket is being closed.
(vtysh_execute_func,vtysh_config_from_file) Use a for loop to
call vtysh_client_execute.
(vtysh_write_terminal,write_config_integrated) Use a for loop to
call vtysh_client_config.
(vtysh_write_memory) Use a for loop to call vtysh_client_execute.
(vtysh_show_daemons) Use a for loop.
(vtysh_connect) The struct vtysh_client is now statically initialized,
so do not initialize it here.
(vtysh_connect_all) Use a for loop to call vtysh_connect. Set
ripd_client pointer for use in vtysh_exit_ripd_only.
ajs [Fri, 28 Jan 2005 20:41:07 +0000 (20:41 +0000)]
2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* lib/buffer.h: Document behavior of buffer_getstr function.
* lib/buffer.c: (buffer_getstr) Fix bug: must handle case where
the string extends beyond the head struct buffer_data.
ajs [Fri, 28 Jan 2005 20:28:35 +0000 (20:28 +0000)]
2005-01-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* lib/command.h: Document behavior of argv_concat function.
* lib/command.c: (argv_concat) Calculate total string length first so
we can call malloc just once (instead of realloc'ing to add each
string element).
(do_echo,config_logmsg) Allow for possible NULL return value from
argv_concat.
hasso [Sun, 23 Jan 2005 21:42:25 +0000 (21:42 +0000)]
* lib/command.[ch]: Make node_parent() function nonstatic. vtyh.c will
use it as well.
* vtysh/vtysh.c: Implement walkup in node tree for vtysh as it already
works in vty.
ajs [Tue, 18 Jan 2005 22:18:59 +0000 (22:18 +0000)]
2005-01-18 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.h: Test for SA_SIGINFO to see whether zlog_signal takes final
two args (siginfo and program_counter).
* log.c: (hex_append) Include this function only if SA_SIGINFO or
HAVE_GLIBC_BACKTRACE is defined.
(zlog_signal) Final two args (siginfo and program_counter) now
depend on whether SA_SIGINFO is defined on this platform.
* sigevent.c: (program_counter) Do not include this function if
SA_SIGINFO is not defined on this platform.
(exit_handler,core_handler) Test for SA_SIGINFO to decide whether
2nd & 3rd arguments are present and to decide how to invoke
zlog_signal.
(trap_default_signals) Test for SA_SIGINFO and invoke sigaction
appropriately.
ajs [Mon, 17 Jan 2005 15:22:28 +0000 (15:22 +0000)]
2005-01-17 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* log.h: Change prototype for zlog_backtrace_sigsafe to take additional
program_counter argument.
* log.c: (zlog_backtrace_sigsafe) Add additional program_counter
argument. If it is non-NULL, use backtrace_symbols_fd to resolve
the address.
(zlog_signal) Call zlog_backtrace_sigsafe with additional
program_counter argument.
hasso [Sun, 16 Jan 2005 23:31:54 +0000 (23:31 +0000)]
* command.[ch], vty.c: cmd_execute_command() function must not attempt
to walk up in the node tree if called from vtysh. Different daemons
might have commands with same syntax in different nodes (for example
"router-id x.x.x.x" commands in zebra/ospfd/ospf6d daemons).
* vtysh.c: Reflect changes in lib. cmd_execute_command() should know
now that it's called from vtysh and must not attempt to walk up in
the node tree.
ajs [Wed, 12 Jan 2005 17:27:27 +0000 (17:27 +0000)]
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* configure.ac: Test for header file <ucontext.h> (for use in
signal processing).
* sigevent.c: (trap_default_signals) Use the SA_SIGINFO flag to
pass additional siginfo_t and ucontext_t arguments to core_handler
and exit_handler.
(core_handler,exit_handler) Now invoked with 3 arguments (using
SA_SIGINFO). Pass additional info to zlog_signal.
(program_counter) New function to find program counter in ucontext_t,
needs to be enhanced to support more platforms (currently works only
on Linux/x86).
* log.h: Change the zlog_signal prototype to add new arguments
siginfo_t * and program_counter.
* log.c: (zlog_signal) Add new arguments siginfo and program_counter.
Include si_addr and program counter (if non-NULL) in message.
And remove #ifdef HAVE_GLIBC_BACKTRACE around hex_append, since
that is now used to render the si_addr and PC pointers.
ajs [Wed, 12 Jan 2005 16:52:55 +0000 (16:52 +0000)]
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* configure.ac: If configure is invoked with --enable-snmp, but
the configure script is unable to find SNMP support on the platform,
then configure should give an error message and exit.
ajs [Wed, 12 Jan 2005 16:41:33 +0000 (16:41 +0000)]
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* redhat/quagga.spec.in: Pass --enable-gcc-rdynamic to configure
to get gcc to link with -rdynamic for better backtraces.
When the rpm is upgraded, the restart logic now works as follows:
1. stop watchquagga; 2. stop all routing daemons; 3. restart zebra
if it was running; 4. start all routing daemons that were running;
and 5. start watchquagga if it was running.
ajs [Wed, 12 Jan 2005 16:24:51 +0000 (16:24 +0000)]
2005-01-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* watchquagga.c: (run_job) Fix bug: delay.tv_sec was being used
without having been initialized when the "force" argument was true.
(try_restart) When phased restart is stopping the routing daemons,
it should tell run_job to update the restart interval.
(phase_check) In final step of phased restart when the routing
daemons are being started again, tell run_job not to update
the restart interval (this is now done when the daemons are
stopped).
paul [Mon, 10 Jan 2005 22:31:16 +0000 (22:31 +0000)]
2005-01-10 Paul Jakma <paul@dishone.st>
* texinfo.tex: Updated to a version which understands @{ and @}
* vtysh.texi: Add node name for @section
* quagga.info: updated build of autogenerated file
gdt [Mon, 10 Jan 2005 14:20:43 +0000 (14:20 +0000)]
2005-01-10 Greg Troxel <gdt@fnord.ir.bbn.com>
* ospf_packet.h: Remove commented out definition of
OSPF_MAX_PACKET; neither it or the uncommented one are used any more.
* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication
when deciding if an update will fit.
(ospf_packet_authspace): Factor out calculation of size required
for authentication.
(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.
Don't confuse readers that there is a macro.
paul [Wed, 5 Jan 2005 08:30:35 +0000 (08:30 +0000)]
2005-01-05 Paul Jakma <paul@dishone.st>
* zserv.c: (zebra_accept) Comment out setting of socket to NONBLOCK
for now, as we dont actually deal with with resending.... See
bugzilla #122, fix from wawa@yandex-team.ru (Vladimir Ivanov).
* kernel_socket.c: (routing_socket) ditto.
paul [Wed, 5 Jan 2005 08:14:13 +0000 (08:14 +0000)]
2005-01-05 Paul Jakma <paul@dishone.st>
* bgp_packet.c: (bgp_write) set socket to nonblock while writing
this should be generalised. See bugzilla #102. Fix supplied by
wawa@yandex-team.ru (Vladimir Ivanov).
ajs [Tue, 4 Jan 2005 16:24:43 +0000 (16:24 +0000)]
2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* configure.ac: Added test for broken CMSG_FIRSTHDR macro
(relevant for Solaris 8 and unpatched Solaris 9, don't know
whether other platforms are affected).
* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined
by the configure test program).
* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead
of CMSG_FIRSTHDR.
* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
instead of CMSG_FIRSTHDR.
* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
CMSG_FIRSTHDR.
ajs [Wed, 29 Dec 2004 20:41:26 +0000 (20:41 +0000)]
2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ospf_packet.c: (ospf_read) Always look up the interface if
ospf_recv_packet returns NULL ifp, since some platforms such
as Solaris 8 appear to support ifindex retrieval but don't.
gdt [Wed, 29 Dec 2004 20:06:23 +0000 (20:06 +0000)]
2004-12-29 Greg Troxel <gdt@poblano.ir.bbn.com>
* sockopt.c (getsockopt_ipv4_ifindex): Document calling
convention. Beef up comments. Handle the case where the cmsghdr
has a zero controllen, or more specifically when the wanted option
is not present. This is needed for Solaris 8, and in general for
any platform for which configure finds a method and it can fail.
Mark some changes with XXX to be cleaned up post 0.98.
ajs [Wed, 22 Dec 2004 17:52:29 +0000 (17:52 +0000)]
2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* redhat/quagga.spec.in: Add watchquagga, and fix some other
logic to make sure that all daemons are restarted on upgrades
and stopped on package removal.
ajs [Wed, 22 Dec 2004 16:17:16 +0000 (16:17 +0000)]
2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* watchquagga.c: Add -b option to circumvent difficulties passing
embedded spaces in command-line arguments. This is an ugly hack,
we should probably use a config file instead.