Age | Commit message (Collapse) | Author |
|
|
|
* zserv.c: Must include network.h and buffer.h for non-blocking I/O.
Remove global message_queue and t_write (need separate buffering for
each client).
(zebra_server_dequeue,zebra_server_enqueue) Remove functions
related to old buggy buffering code.
(zserv_delayed_close) New thread callback function to delete a client.
(zserv_flush_data) New thread callback function to flush buffered
data to client.
(zebra_server_send_message) Rewritten to use buffer_write (so
buffering of writes and non-blocking I/O work properly).
(zsend_interface_add,zsend_interface_delete,zsend_interface_address,
zsend_interface_update) Return 0 instead of -1 if !client->ifinfo
(this is not really an error). Return value from
zebra_server_send_message.
(zsend_route_multipath,zsend_ipv4_nexthop_lookup,
zsend_ipv4_import_lookup) Return value from zebra_server_send_message.
(zsend_ipv6_nexthop_lookup) Fix scope to static, and return value
from zebra_server_send_message.
(zsend_router_id_update) Must use zebra_server_send_message instead
of deprecated writen function. Return 0 instead of -1 if this client
is not subscribed to router-id updates (since this is not really
an error).
(zread_interface_add) Change type to static int. If
zsend_interface_add fails or zsend_interface_address fails, return -1
immediately (since the client has had an I/O error).
(zread_interface_delete,zread_ipv4_add,zread_ipv4_delete,
zread_ipv6_add,zread_ipv6_delete,zread_router_id_delete) Return 0
to indicate success.
(zread_ipv4_nexthop_lookup) Return value from
zsend_ipv4_nexthop_lookup.
(zread_ipv4_import_lookup) Return value from zsend_ipv4_import_lookup.
(zebra_read_ipv6) Remove unused function.
(zread_ipv6_nexthop_lookup) Return value from
zsend_ipv6_nexthop_lookup.
(zread_router_id_add) Return value from zsend_router_id_update.
(zebra_client_close) Call buffer_free(client->wb) and
thread_cancel(client->t_suicide).
(zebra_client_create) Allocate client->wb using buffer_new.
(zebra_client_read) Support non-blocking I/O by using stream_read_try.
Use ZEBRA_HEADER_SIZE instead of 3.
(zebra_accept) Fix bug: reset accept thread at top. Make client
socket non-blocking using the set_nonblocking function.
(config_write_forwarding) Fix scope to static.
(zebra_init) Remove initialization code for old buggy write buffering.
* zserv.h: Add 2 new fields to struct zserv: struct buffer *wb
(to enable buffered writes with non-blocking I/), and
struct thread *t_suicide to support delayed close on I/O
errors.
* router-id.h: Remove prototypes for zread_router_id_add and
zread_router_id_delete (their scope should be static to zserv.c).
|
|
* redistribute.c: (zebra_check_addr,is_default,
zebra_redistribute_default,zebra_redistribute) Fix scope to be static.
|
|
if we are not debugging.
|
|
* zserv.c: (zebra_read_ipv6) replace the char * arithmetic with
STREAM_READABLE.
|
|
* Not all Linux netlink systems have IFLA_WIRELESS
|
|
* daemon.c: (daemon) Replace perror with zlog_err.
* vty.c: (vty_serv_un) Replace perror with zlog_err.
* ripd.c: (rip_create_socket) Replace perror with zlog_err.
* ioctl.c: (if_ioctl,if_ioctl_ipv6,if_get_flags) Replace perror with
zlog_err.
* ioctl_solaris.c: (if_ioctl,if_ioctl_ipv6) Replace perror with
zlog_err.
|
|
* 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.
[backport candidate]
|
|
* rt_netlink.c: (netlink_socket,netlink_request,netlink_parse_info,
netlink_talk) Save errno before calling zserv_privs.change.
[backport candidate]
|
|
* zebra/rt_netlink.c: ignore wireless newlink netlink messages.
|
|
case of /proc being used. I don't have others to test with at the
moment.
|
|
[pullup candidate]
|
|
* 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.
|
|
* 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.
|
|
* connected.c: (connected_add_ipv4) Limit warning about /32 addresses
with no peer specified to PtP interfaces only.
|
|
|
|
Note two warnings in comments. The serious one is that struct
interface->ifindex probably needs to be signed, ssince we store and
compare to -1.
|
|
* *.c: Change level of debug messages to LOG_DEBUG.
|
|
* bgp_main.c: (main) The 2nd argument to openzlog has been removed.
* isis_main.c: (main) The 2nd argument to openzlog has been removed.
* ospf6_main.c: (main) The 2nd argument to openzlog has been removed.
Note that stdout logging will no longer be enabled by default when
not running as a daemon.
* ospf_main.c: (main) The 2nd argument to openzlog has been removed.
* rip_main.c: (main) The 2nd argument to openzlog has been removed.
* ripng_main.c: (main) The 2nd argument to openzlog has been removed.
* main.c: (main) The 2nd argument to openzlog has been removed.
So stdout logging will no longer be enabled by default.
* irdp_main.c: (irdp_finish) Reduce severity of shutdown message
from LOG_WARNING to LOG_INFO.
* vtysh.c: Make several functions static instead of global.
Added several commands to support destination-specific logging levels.
(vtysh_completion) This function is unused, so comment it out.
* basic.texi: Document new logging features. Separate basic config
commands from basic VTY commands.
* log.h: Replace struct zlog flags and maskpri fields with maxlvl
array to support individual logging levels for each destination.
Remove the 2nd argument to openzlog since the default logging config
should be standardized inside the library. Replaced the
zlog_set_flag and zlog_reset_flag functions with zlog_set_level.
And zlog_set_file now requires an additional log_level argument.
Declare zlog_proto_names for use inside command.c in the
"show logging" command. Added defines useful for command
construction.
* log.c: (vzlog) Decide where to send the message based on the
individual logging levels configured for each destination.
Remove support for ZLOG_STDERR since it was never actually used.
Support record-priority for terminal monitors.
(zlog_signal,zlog_backtrace_sigsafe) Support destination-specific
logging levels. Remove stderr support (was never used). Added
support for terminal monitor logging.
(_zlog_assert_failed) Increase message severity to LOG_EMERG.
(openzlog) Remove 2nd argument since default config should be
standardized in library. By default, terminal monitoring
is set to debug, and all other logging is disabled.
(zlog_set_flag,zlog_reset_flag) Removed.
(zlog_set_level) New function to replace zlog_set_flag and
zlog_reset_flag. Supports destination-specific logging levels.
(zlog_set_file,zlog_reset_file) Support file-specific logging level.
(zlog_rotate) Log an error message if fopen fails, and support
new file-specific logging level.
* command.h: Change DEFUN_CMD_FUNC_DECL and DEFUN_CMD_FUNC_TEXT so that
command functions will be static instead of global. Remove
declarations for config_exit and config_help. Define new macros
DEFUNSH_ATTR, DEFUNSH_HIDDEN, and DEFUNSH_DEPRECATED so we can
have deprecated commands in vtysh. Similarly, for completeness,
define macros ALIAS_SH, ALIAS_SH_HIDDEN, and ALIAS_SH_DEPRECATED.
Also, fix bug in ALIAS_ATTR macro (didn't matter because it
was never used).
* command.c: Make many functions static instead of global.
(facility_name,facility_match,level_match) New functions
to support enhanced destination-specific logging levels.
(config_write_host) Support new destination-specific logging levels.
(config_logmsg) Added new "logmsg" command to help test logging
system.
(show_logging) Added "show logging" command to show the current
configuration of the logging system.
(config_log_stdout_level) Support explicit stdout logging level.
(no_config_log_stdout) Now takes optional LEVEL arg.
(config_log_monitor,config_log_monitor_level,no_config_log_monitor)
New commands creating new "log monitor" commands to set terminal
monitoring log level.
(config_log_file_level) Support explicit file logging level.
(config_log_syslog_level) Support explicit syslog logging level.
(config_log_facility,no_config_log_facility) Implement new
"log facility" command.
(cmd_init) Add hooks for new commands: "show logging", "logmsg",
"log stdout <level>", "log monitor", "log monitor <level>",
"no log monitor", "log file <filename> <level>",
"no log file <filename> <level>", "log syslog <level>",
"log facility", and "no log facility".
* vty.h: Added a "level" argument to vty_log so it can support
"log record-priority". Declare new function vty_log_fixed for
use in signal handlers.
* vty.c: (vty_log,vty_log_out) Added a "level" argument to support
"log record-priority" for vty terminal monitors.
(vty_down_level) Use config_exit_cmd.func instead of calling
config_exit directly (since command functions will now be static
instead of global).
(vty_log_fixed) New function to send terminal monitor messages
from inside a signal handler.
|
|
* bgp_main.c: (sigint) Use zlog_notice for termination message.
(main) Use zlog_notice for startup announcement.
* isis_main.c: (sigint,sigterm) Use zlog_notice for termination message.
(terminate) This function should be static, not global.
(main) Use zlog_notice for startup announcement, and remove
ifdef ZEBRA_VERSION.
* version.h.in: Remove declaration for pid_output_lock, this function
is now static, not global.
* pid_output.c: (pid_output_lock) This function should be static, not
global. And remove "old umask" error message, since it was really
an unimportant debug message, not an error.
(pid_output) Need to declare static function pid_output_lock.
* ospf6_main.c: (sigint,sigterm) Use zlog_notice for termination
message.
(main) Remove commented-out call to pid_output_lock (which should
never be called other than from inside pid_output). And use
zlog_notice to print the startup message, which now includes
the vty port.
* ospf_main.c: (sigint) Use zlog_notice for termination message.
(main) Issue a startup announcement using zlog_notice.
* rip_main.c: (sigint) Use zlog_notice for termination message.
(main) Add a startup announcement using zlog_notice.
* ripng_main.c: (sighup) Remove spurious terminating message.
(sigint) Use zlog_notice for termination message.
(main) Issue a startup announcement using zlog_notice.
* main.c: (sigint) Use zlog_notice for termination message.
(main) Add a startup announcement using zlog_notice.
|
|
|
|
|
|
|
|
* ospfd/ospf_packet.c: setsockopt_pktinfo -> setsockopt_ifindex
* zebra/irdp_main.c: ditto
|
|
ripd might need some more testing though.
|
|
though. Needs serious cleanup.
|
|
|
|
initializes connection, and "no smux peer" command terminates it. Fixes
bugzilla #47 and #112.
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
* irdp_interface.c: (no_ip_irdp_address_preference_cmd)
add missing listnode declaration.
|
|
* irdp_{interface,main}.c: lists typedef removal cleanup.
update some list loops to LIST_LOOP. some miscellaneous style
and indent fixups.
(no_ip_irdp_address_preference_cmd) Fix delete of referenced node
in loop.
* irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer
to pointer.
* if_ioctl{,_solaris}.c: lists typedef removal cleanup.
update some list loops to LIST_LOOP.
|
|
|
|
* zserv.c: (zsend_route_multipath) fix nasty bad memset of struct
in_addr to sizeof(struct in6_addr), causing odd and hard to debug
crash.
|
|
daemon to change netlink receive buffer size.
|
|
* ipforward_sysctl.c (mib_ipv6): Use size_t for len, per
sysctl(3), rather than int. (Needed on NetBSD/alpha to display
forwarding status correctly.)
|
|
* zebra/zserv.c: (zebra_init) remove implicit ip forward enabling
* NEWS: warn about forwarding change
|
|
* irdp_main.c: update to match sockopt renames.
* irdp_packet.c: include sockopt.h and update to match sockopt
renames.
|
|
* rtadv.c (rtadv_send_packet): Allocate space for control messages
more carefully; it was wrong on NetBSD/sparc where CMSG alignment
is to 8 bytes instead of 4, and overwriting the address. Use the
provided macros for determining lengths.
|
|
* if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups
* zserv.c: ditto
* ioctl_solaris.c: ditto.
* interface.c: cast for LLADDR
* interface.h: Add guards, include redistribute.h and remove
extraneous definitions of zebra_interface_{up,down}_update
* ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6
* redistribute.h: include dependent header, zserv.h
* zserv.h: include dependent header, rib.h
|
|
* irdp_main.c: use setsockopt_pktinfo_ipv4
* irdp_packet.c: use SOPT_SIZE_CMSG_PKTINFO_IPV4 and
getsockopt_pktinfo_ifindex()
|
|
* kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.
This is arguably not a security problem, since strlcat is used to copy
to the buffer -gdt.
|
|
|
|
2) Following common style is always better anyway.
|
|
libzebra and libospfapiclient are now built shared, and linked shared
with the daemons. This reduces the memory needed when running
multiple daemons; each daemon is at least 150k smaller. Static
libraries are still built, and libtool should use them on platforms
which don't have shared libaries. As with autoconf, the user of a
distribution does not need libtool; one just needs that to build from
CVS.
libospf.a is still a non-shared library, and still installed, not
because that makese sense, but because I don't understand why it is
the way it is now.
Note that the tree was tagged 'libtool-before' just before this commit.
|