ajs [Fri, 5 Nov 2004 01:25:55 +0000 (01:25 +0000)]
2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vty.h: Remove fields in struct vty that were related to VTY_CONTINUE
capabilities (that were used only in bgpd/bgp_route.c and are now
removed). Also remove some other fields that were not being
used at all.
* vty.c: (vty_execute) Do not test for obsolete status values VTY_START
and VTY_CONTINUE.
(vty_read) Remove calls to vty->output_func since that was part
of the VTY_CONTINUE infrastructure that has been removed.
(vty_flush) Remove code to support VTY_START and VTY_CONTINUE.
(vty_close) Remove code to cancel vty->t_output thread, since that
thread was never actually used.
* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature
is deprecated because the output did not represent a single point
in time. All output needs to be generated inline and buffered
by the library code.
(route_vty_out,route_vty_out_tag,damp_route_vty_out,
flap_route_vty_out) Remove code to count number of lines of output,
since this was only useful for VTY_CONTINUE behavior.
(bgp_show_callback) Removed.
(bgp_show_table) Remove hooks for VTY_CONTINUE callback support.
As a result, there's a new output_arg argument to this function.
Make function static.
(bgp_show) Make function static and add a new output_arg argument.
Change all functions that call bgp_show or bgp_show_table to
pass the new output_arg argument (that used to be passed inside
vty->output_arg).
* bgp_mplsvpn.c: Remove declarations of functions defined in
bgp_route.c; these declarations belong in bgp_route.h.
* bgp_route.h: Declare 3 global functions used in both bgp_route.c
and in bgp_mplsvpn.c.
ajs [Thu, 4 Nov 2004 19:26:16 +0000 (19:26 +0000)]
2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* vty.c: Vtysh connections to daemons should use buffering.
(vty_out) Remove exception for vty_shell_serv, just use buffer_write.
(vty_new) Increase output buffer size to 4096 rounded up to a
multiple of pagesize.
(vtysh_read) After command has been executed and all output buffered,
call buffer_flush_available and schedule further writes if the
buffers are not yet empty.
(vtysh_write) New function to flush output to vtysh when the socket
is writeable.
(vty_event) Added new VTYSH_WRITE event for flushing buffers to vtysh
clients. Also, should save read thread in vty->t_read so the
thread can be cancelled in vty_close.
* buffer.h: In struct buffer_data, remove unused "parent" field.
Convert "unsigned char *data" to "unsigned char data[0]" to save
a malloc. Declare new function buffer_flush_available that works
with non-blocking sockets.
* buffer.c: (buffer_data_new) Use a single malloc now that data is
a variable-size array at end of structure.
(buffer_data_free) Just a single free now that data is part of the
structure.
(buffer_write) Simplify the logic to make behavior more transparent.
(buffer_flush) Decrease b->length as data is written out.
(buffer_flush_vty_all) Decrease b->length as buffers are freed.
(buffer_flush_vty) Decrease b->length as data is written out.
(buffer_flush_available) New function to flush non-blocking sockets.
paul [Tue, 2 Nov 2004 20:26:45 +0000 (20:26 +0000)]
2004-11-02 Paul Jakma <paul@dishone.st>
* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points
to it. Add convenience pointer to msg->msg_iov[1], and use this,
fixing the unfortunate borkenness introduced in moving of this code
to a function.
(ospf_write) remove iovp and fix up call to previous.
(ospf_ls_upd_packet_new) cast size to long int - unfortunately
glibc's size_t format modifier is not portable.
paul [Sun, 31 Oct 2004 18:01:13 +0000 (18:01 +0000)]
2004-10-31 Paul Jakma <paul@dishone.st>
* ospf_packet.c: (ospf_ls_upd_packet_new) Format for size_t should
be ld.
* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of
THREAD_ARG to store an integer, but it should at least use same
same type to retrieve the value. Assert value is sane.
paul [Sun, 31 Oct 2004 16:19:24 +0000 (16:19 +0000)]
2004-10-31 Paul Jakma <paul@dishone.st>
* memory.h: Add MTYPE_THREAD_FUNCNAME and MTYPE_THREAD_STATS
* thread.c: Update stats and funcname alloc/free to use previous
specific memory type defines
paul [Sun, 31 Oct 2004 11:24:51 +0000 (11:24 +0000)]
2004-10-31 Paul Jakma <paul@dishone.st>
* ospf_packet.c: (ospf_write_frags) Add debug output
(ospf_write) set type early, so we can pass it to
ospf_write_frags.
(ospf_ls_upd_packet_new) print size in debug output when too large
packet is encountered.
paul [Fri, 29 Oct 2004 08:29:36 +0000 (08:29 +0000)]
2004-10-29 Paul Jakma <paul@dishone.st>
* vty.c: Move setting of sock to O_NONBLOCK from vty_serv_un
to vtysh_accept, where sock is the actual fd we wanted to set to
O_NONBLOCK, ie the /connected/ vtysh unix socket.
paul [Mon, 25 Oct 2004 14:19:15 +0000 (14:19 +0000)]
2004-10-25 Paul Jakma <paul@dishone.st>
* Update with fix in debian bug id 222930.
* bgp_main.c: Add ZCAP_RAW, needed to bind to interfaces.
bgp_network.c: (....) raise/lower privs around call to
SO_BINDTODEVICE sockopt.
paul [Fri, 22 Oct 2004 12:27:44 +0000 (12:27 +0000)]
2004-10-22 Paul Jakma <paul@dishone.st>
* command.h: Cleanup the defines a bit, add helper defines and
collapse all defines to use those. Add an attribute field to
cmd_element to support, eg hidden or deprecated commands, add
defun defines for such. All that's left to do is add logic
to command.c to check these attributes... ;)
paul [Fri, 22 Oct 2004 12:05:17 +0000 (12:05 +0000)]
2004-10-22 Paul Jakma <paul@dishone.st>
* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()
function.
* ospf_packet.c: (ospf_read) manually look up ifindex
if system could not have returned one, eg openbsd.
paul [Fri, 22 Oct 2004 11:51:57 +0000 (11:51 +0000)]
2004-10-22 Paul Jakma <paul@dishone.st>
* sockopt.c: (setsockopt_pktinfo) unexported
* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway
define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have
neither IP_RECVIF nor IP_PKTINFO (eg openbsd).
paul [Fri, 22 Oct 2004 10:27:28 +0000 (10:27 +0000)]
2004-10-22 Paul Jakma <paul@dishone.st>
* ripd.c: Collapse redundant passing of various address structs,
struct interface and struct connected as arguments to functions
down to two key arguments, namely struct connected and, possibly,
address of source/destination. Testing for RIPv1 would be useful.
(rip_read) lookup struct connected for the received packet, pass
it on.
* rip_interface.c: With previous changes, we no longer have to tread
carefully with struct connected, as it will always be there and
valid.
paul [Fri, 22 Oct 2004 04:55:05 +0000 (04:55 +0000)]
2004-10-22 Paul Jakma <paul@dishone.st>
* configure.ac: fix up enable help alignment slightly
Add --enable-gcc-ultra-verbose to set various gcc warnings which
should one day be fixed but are not serious problems or which
could be false-positives.
hasso [Wed, 13 Oct 2004 10:33:26 +0000 (10:33 +0000)]
Make initializing smux connection configurable - "smux peer OID" command
initializes connection, and "no smux peer" command terminates it. Fixes
bugzilla #47 and #112.
paul [Wed, 13 Oct 2004 05:22:18 +0000 (05:22 +0000)]
2004-10-13 Paul Jakma <paul@dishone.st>
* (global) more const'ification.
* sockunion.c: (sockunion_su2str) buffer should be sized
SU_ADDRSTRLEN.
(sockunion_log) do not return stack variables, strdup buf before
return.
* vty.h: Fix up the VTY_GET_INTEGER macros. Testing caller supplied
values against ULONG_MAX is daft, when caller probably has passed
a type that can not hold ULONG_MAX. use a temporary long instead.
Add VTY_GET_LONG, make VTY_GET_INTEGER_RANGE use it, make
VTY_GET_INTEGER a define for VTY_GET_INTEGER_RANGE.
paul [Wed, 13 Oct 2004 05:06:08 +0000 (05:06 +0000)]
2004-10-13 Paul Jakma <paul@dishone.st>
* (global) more const'ification and fixups of types to clean up code.
* bgp_mplsvpn.{c,h}: (str2tag) fix abuse. Still not perfect,
should use something like the VTY_GET_INTEGER macro, but without
the vty_out bits..
* bgp_routemap.c: (set_aggregator_as) use VTY_GET_INTEGER_RANGE
(no_set_aggregator_as) ditto.
* bgpd.c: (peer_uptime) fix unlikely bug, where no buffer is
returned, add comments about troublesome return value.
paul [Mon, 11 Oct 2004 18:21:55 +0000 (18:21 +0000)]
2004-09-17 Paul Jakma <paul@dishone.st>
* vtysh.c: (vtysh_client_execute) fix the sync fix. The 4th and
final sync byte is not ASCII NULL, it's actually a status integer,
and only ASCII NULL if CMD_SUCCESS is returned by daemon.
Fix pointed out by Hasso.
paul [Mon, 11 Oct 2004 11:00:30 +0000 (11:00 +0000)]
2004-10-11 Paul Jakma <paul@dishone.st>
* (global) Const char update and signed/unsigned fixes.
* (various headers) size defines should be unsigned.
* ospf_interface.h: remove duplicated defines, include the
authoritative header - though, these defines should probably
be moved to a dedicated header, or ospfd.h.
* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.
* ospf_packet.c: (ospf_write) cast result of shift to unsigned.
paul [Mon, 11 Oct 2004 10:11:25 +0000 (10:11 +0000)]
2004-10-11 Paul Jakma <paul@dishone.st>
* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order
remove ntohs that should have dissappeared. Take struct ip
as argument, caller has to know there's an IP header at start of
stream anyway.
* ospf_dump.h: update declaration of ospf_ip_header_dump.
* ospf_packet.c: (ospf_write) correct call to
sockopt_iphdrincl_swab_htosys which was munging the header.
(ospf_recv_packet) ip_len is needed for old OpenBSD fixup.
(ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as
we have it.
paul [Sun, 10 Oct 2004 11:56:56 +0000 (11:56 +0000)]
2004-10-10 Paul Jakma <paul@dishone.st>
* version.h.in: (pid_output*) add const qualifier.
* command.h: Change DEFUN func to take const char *[] rather
than char **, to begin process of fixing compile warnings in lib/.
Nearly all other changes in this commit follow from this change.
* buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take
const void * and cast an automatic const char *p to it.
(buffer_putstr) add const
* command.c: (zencrypt) const qualifier
(cmd_execute_command_real) ditto
(cmd_execute_command_strict) ditto
(config_log_file) ditto.
Fix leak of getcwd() returned string.
* memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.
* distribute.{c,h}: Update with const qualifier.
(distribute_free) use MTYPE_DISTRIBUTE_IFNAME
(distribute_lookup) Cast to char *, note that it's ok.
(distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.
(distribute_get) Cast to char *, note that it's ok.
* filter.c: Update with const qualifier.
* if.{c,h}: ditto.
* if_rmap.{c,h}: ditto.
(if_rmap_lookup) Cast to char *, note that it's ok.
(if_rmap_get) ditto.
* log.{c,h}: Update with const qualifier.
* plist.{c,h}: ditto.
* routemap.{c,h}: ditto.
* smux.{c,h}: ditto. Fix some signed/unsigned comparisons.
* sockopt.c: (getsockopt_cmsg_data) add return for error case.
* vty.c: Update with const qualifier.
gdt [Thu, 7 Oct 2004 19:38:20 +0000 (19:38 +0000)]
2004-10-07 Greg Troxel <gdt@claude.ir.bbn.com>
* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don't
use of variable names 'node' and 'nextnode' to avoid possible
conflict with list macros. Move variable declaration inside for
loop after a statement to top of function.
paul [Tue, 5 Oct 2004 14:57:50 +0000 (14:57 +0000)]
2004-10-05 Paul Jakma <paul@dishone.st>
* thread.c: (funcname_thread_add_timer_timeval) new function, add
timer at specified timeval.
(funcname_thread_add_timer) use funcname_thread_add_timer_timeval.
(funcname_thread_add_timer_msec) ditto
paul [Tue, 5 Oct 2004 14:39:43 +0000 (14:39 +0000)]
2004-10-05 Paul Jakma <paul@dishone.st>
* irdp_packet.c: (parse_irdp_packet) style issues.
Use sockopt_iphdrincl_swab_systoh.
Try unbork the code. Checksum the ICMP data and actually
compare it to received checksum. Check data length against
claimed length in header.
Always use ntoh.. when accessing addresses, even when the
comparison happens to be endian-safe.
(send_packet) minor style isues. Use
sockopt_iphdrincl_swab_htosys.
(irdp_iph_hton/ntoh) IP header to/from network/host order.