Age | Commit message (Collapse) | Author |
|
|
|
* .cvsignore: Add built files
|
|
Implement non-blocking zclient I/O with buffering.
* zclient.h (struct zclient): Add two fields to support non-blocking
I/O: struct buffer *wb, and struct thread *t_write.
(zclient_free): Remove function.
(zebra_redistribute_send): Change 2nd arg from socket fd to
struct zclient * (needed to support non-blocking I/O and buffering).
(zclient_send_message): New function to send an arbitrary
message with non-blocking I/O.
* zclient.c (zclient_new): Create write buffer.
(zclient_free): Remove unused function.
(zclient_stop): Must cancel new t_write thread. Also, reset
all buffers: ibuf, obuf, and wb.
(zclient_failed): New helper function for typical error handling.
(zclient_flush_data): New thread to flush queued data.
(zclient_send_message): New function to send the message in
zclient->obuf to zebra using non-blocking I/O and buffering.
(zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
new zclient_send_message function instead of calling writen.
(zclient_start): Set socket non-blocking. Also, change 2nd arg
to zebra_redistribute_send from zclient->sock to zclient.
(zebra_redistribute_send): Change 2nd arg to struct zclient *.
Can now use zclient->obuf to assemble the message instead of
allocating a temporary stream. And call zclient_send_message to
send the message instead of writen.
(zclient_read): Convert to support non-blocking I/O by using
stream_read_try instead of deprecated stream_read.
(zclient_redistribute): Change 2nd arg to zebra_redistribute_send
from zclient->sock to zclient.
* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
Change 2nd arg to zebra_redistribute_send from zclient->sock
to zclient.
* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
of writen.
* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
from zclient->sock to zclient.
* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
Change 2nd arg to zebra_redistribute_send from zclient->sock
to zclient.
* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
The 2nd arg to zebra_redistribute_send is now zclient instead of
zclient->sock.
* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
function.
* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
to send the message to zebra instead of calling writen directly, since
zclient_send_message understands non-blocking I/O and will manage
the buffer queue appropriately.
(isis_zebra_finish): Remove unused function, particularly since
the zclient_free function has been removed.
|
|
* configure.ac: Move AC_CANONICAL_* stuff before AM_INIT_AUTOMAKE to
eliminate warning message about AC_ARG_PROGRAM being called
before AC_CANONICAL_TARGET.
|
|
* Makefile.am: README.txt to EXTRA_DIST
* README.txt: new file, package creation, install, usage notes.
|
|
* configure.ac: Call AC_CANONICAL_{BUILD,TARGET} macros. Target isnt
set otherwise, afaict. AC_SUBST enable_{user,group,vty_group} and
quagga_statedir - the Solaris package bits for one need this.
configure the solaris/ Makefile.
* Makefile.am: solaris is a subdir - unconditional or else it wont
be included in non-solaris made dists.
|
|
* (all) Initial check-in of files for building S10 packages
* protototype.*.in: package prototype files for SysV packages
* *.xml.in: SMF manifests for Quagga daemons
* pkginfo.*.tmpl.in: daemon specific pkginfo, refererenced
by prototype files.
* pkginfo.tmpl.in: Quagga common pkginfo bits
* quagga.init.in: SMF method script
* Makefile.am: Automake file for building packages
* depend.*: Solaris 10 dependencies for packages, referenced by
prototype files.
* .cvsignore: no idea what this is for...
|
|
* if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args
in ALL_LIST_ELEMENTS_RO macro.
|
|
* quagga.info: Update to match bgpd.texi addition
|
|
* configure.ac: Fix host string recognition for Solaris Nevada aka
solaris2.10.1, and hopefully future such strings.
|
|
* Makefile.am: topology should not be a conditional SUBDIR,
otherwise make dist breaks.
* topology/Makefile.am: remove EXTRA_DIST of files which dont
exist in that directory, broke make dist.
* isisd.c: (show_isis_generated_topology_cmd) convert LIST_LOOP
* isis_lsp.c: (generate_topology_lsps) ditto
(build_topology_lsp_data) ditto
|
|
* zserv.c (zebra_client_read): Fix bug: first read attempt should
read ZEBRA_HEADER_SIZE minus the number of bytes already read.
Improve efficiency by maintaining a calculation of the number
of bytes read instead of calling stream_get_endp multiple times.
If message length is too small, issue a warning message (not debug)
before closing the connection. And also check that message length
is not too big.
|
|
about IPv6 nexthops.
|
|
status to unsigned here, because we already checked that it isn't
negative or 0.
* rt_netlink.c (netlink_interface_addr): Prefix length belongs to the
address, not to the interface.
* rt_netlink.c (netlink_route_multipath): Fix debug. No useless info
is printed out now and IPv6 info is handeled.
|
|
|
|
family node.
[backport candidate]
|
|
* sigevent.c: On GNU_LINUX, check whether __USE_GNU is already defined.
|
|
* vty.c: (vty_log_fixed) Use casts to (void *) to try to eliminate
compiler warnings when assigning a (const char *) value to
struct iovec iov_base.
|
|
* zebra.h: If GNU_LINUX is defined, then define _GNU_SOURCE. This
fixes a problem where we were not getting the declaration of strnlen
in <string.h>.
|
|
* bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable
the length of confederation path segments to be included during the
as-path length check in the best path decision.
|
|
Closes Bugzilla #167.
|
|
inet_ntoa alike.
* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes
argument now by value.
|
|
|
|
procedure. Define vtysh_cmd_FILES. Use EXTRA_DIST.
|
|
* (global): Fix up list loops to match changes in lib/linklist,
and some basic auditing of usage.
* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES
* HACKING: Add notes about deprecating interfaces and commands.
* lib/linklist.h: Add usage comments.
Rename getdata macro to listgetdata.
Rename nextnode to listnextnode and fix its odd behaviour to be
less dangerous.
Make listgetdata macro assert node is not null, NULL list entries
should be bug condition.
ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use
with for loop, Suggested by Jim Carlson of Sun.
Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the
"safety" of previous macro.
LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to
distinguish from the similarly named functions, and reflect their
effect better.
Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section
with the old defines which were modified above,
for backwards compatibility - guarded to prevent Quagga using it..
* lib/linklist.c: fix up for linklist.h changes.
* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single
scan of the area list, rather than scanning all areas first for
INTER_ROUTER and then again for INTER_NETWORK. According to
16.2, the scan should be area specific anyway, and further
ospf6d does not seem to implement 16.3 anyway.
|
|
ripngd/ripngd.c (inet6_ntop).
* ripngd.[hc]: Remove inet6_ntop() and any usage of it. inet6_ntoa()
from lib is used now.
* ripng_interface.c: inet6_ntop() -> inet6_ntoa().
* ripng_peer.c: inet6_ntop() -> inet6_ntoa().
|
|
* HACKING: Expand on the importance of supplying good ChangeLog's in
the PATCH SUBMISSION section.
|
|
* HACKING: remove the 'manually patch redhat/quagga.spec' bit
from RELEASE section. Let the rpm revision be CONFDATE, will work
fine.
|
|
* Makefile.am: Get rid of built_sources. It causes them to be added
to dist, and the dist host can not generate the PDFs.
|
|
* lib/vty.c: Improve logging of failures to open vty socket(s).
See bugid #163.
* zebra/zserv.c: print more helpful errors when we fail to successfully
bind and listen on zserv socket. Closes bugzilla #163.
|
|
brackets around source. Single ones broke square brackets in the
code (arrays).
|
|
and define action for cross-compiling.
[backport candidate]
|
|
* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
avoid overflow.
* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
* if.h: Fix comments to reflect that if_lookup_by_name and
if_get_by_name now require the argument strings to be NUL-terminated.
* if.c: (if_lookup_by_name) Compare using strcmp.
(if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.
|
|
* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a
function that does not exist.
* ospf6_interface.[ch]: (ospf6_interface_lookup_by_name) Remove unused
function.
|
|
* ospf_zebra.c: (zebra_interface_if_lookup) Must use
if_lookup_by_name_len.
|
|
* isis_zebra.c: (isis_zebra_if_del) Must use if_lookup_by_name_len.
|
|
* if.c: (if_nametoindex) The man page is rather vague, but it seems
like the argument to if_nametoindex has an implicit maximum length
of IFNAMSIZ characters.
|
|
* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.
* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.
(if_get_by_name) Tighten up code.
(interface) Use new function if_get_by_name_len.
* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len
function.
(zebra_interface_state_read) Use new if_lookup_by_name_len function.
* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
to save a memcpy.
* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
if_get_by_name_len function.
* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.
|
|
generator code.
* isisd/Makefile.am: Variables to handle conditonal compiling of
topology generator code.
* isisd/isis_lsp.c: lsppdu_realloc() is used by topology generator.
* isisd/isisd.c: Rename show_isis_topology_cmd to not conflict the one
in the isis_spf.c.
* isisd/isisd.h: Remove TOPOLOGY_GENERATE define, it will be defined in
toplevel config.h if topology generator is enabled.
* isisd/topology/Makefile.am: Handle the libtoolized Quagga libraries.
|
|
* Makefile.am: Urg, dont use automake _SOURCES, _BUILT_SOURCES
for figures, automake doesnt know anything about them.
|
|
* str.c: Replace strlcpy and strlcat with actual working versions
copied from rsync-2.6.2/lib/compat.c.
|
|
Fix problems when netlink interfaces are renamed (same ifindex used
for a new interface). Start cleaning up some problems with the way
interface names are handled.
* interface.c: (if_new_intern_ifindex) Remove obsolete function.
(if_delete_update) After distributing the interface deletion message,
set ifp->ifindex to IFINDEX_INTERNAL.
(if_dump_vty) Detect pseudo interface by checking if ifp->ifindex is
IFINDEX_INTERNAL.
(zebra_interface) Check return code from interface_cmd.func.
Do not set internal ifindex values to if_new_intern_ifindex(),
since we now use IFINDEX_INTERNAL for all pseudo interfaces.
* kernel_socket.c: (ifm_read) Fix code and comments to reflect that
all internal interfaces now have ifp->ifindex set to IFINDEX_INTERNAL.
* rt_netlink.c: (set_ifindex) New function used to update ifp->ifindex.
Detects interface rename events by checking if that ifindex is already
being used. If it is, delete the old interface before assigning
the ifindex to the new interface.
(netlink_interface, netlink_link_change) Call set_ifindex to update
the ifindex.
* if.h: Remove define for IFINDEX_INTERNBASE and add define
IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-
interfaces should have ifindex set to 0.
(if_new) Remove function.
(if_delete_retain) New function to delete an interface without
removing from iflist and freeing the structure.
(ifname2ifindex) New function.
* if.c: (if_new) Remove function (absorb into if_create).
(if_create) Replace function if_new with call to calloc.
Set ifp->ifindex to IFINDEX_INTERNAL. Fix off-by-one error
in assert to check length of interface name. Add error message
if interface with this name already exists.
(if_delete_retain) New function to delete an interface without
removing from iflist and freeing the structure.
(if_delete) Implement with help of if_delete_retain.
(ifindex2ifname) Reimplement using if_lookup_by_index.
(ifname2ifindex) New function to complement ifindex2ifname.
(interface) The interface command should check the name length
and fail with a warning message if it is too long.
(no_interface) Fix spelling in warning message.
(if_nametoindex) Reimplement using if_lookup_by_name.
(if_indextoname, ifaddr_ipv4_lookup) Reimplement using
if_lookup_by_index.
* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp->ifindex
to IFINDEX_INTERNAL.
* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead
of if_delete, since it is generally not safe to remove interface
structures. After deleting, set ifp->ifindex to IFINDEX_INTERNAL.
(zebra_interface_if_lookup) Tighten up code.
* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function
was commented out. But this is not safe: we should at least update
the ifindex when the interface is deleted. So the new version
updates the interface status and sets ifp->ifindex to
IFINDEX_INTERNAL.
(ospf6_zebra_route_update) Use if_indextoname properly.
* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface
flags to help with debugging.
* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp->ifindex
to IFINDEX_INTERNAL.
(zebra_interface_if_lookup) Make function static. Tighten up code.
* rip_interface.c: (rip_interface_delete) After deleting, set
ifp->ifindex to IFINDEX_INTERNAL.
* ripng_interface.c: (ripng_interface_delete) After deleting, set
ifp->ifindex to IFINDEX_INTERNAL.
|
|
* .cvsignore: ignore eps files, built from sources
|
|
* INSTALL.quagga.txt: Add note about additional CVS build
requirements, if one wishes to build ps/pdf docs.
|
|
* ospf6_route.c: (ospf6_route_show, ospf6_route_show_detail) Protect
against the possibility that the string returned by if_indextoname
may not terminate with '\0'.
|
|
* configure.ac: Add strnlen to AC_CHECK_FUNCS.
* zebra.h: Should include str.h to pick up missing functions.
* str.h: Declare strnlen if needed.
* str.c: Do not include str.h since zebra.h now includes it.
(strnlen) New function.
|
|
* Makefile.am: quagga_TEXINFOS should depend on figures_BUILT_SOURCES.
|
|
* fig{-{normal,rs}-processing,_topologies_{rs,full}}.dia: new
files, dia diagramme XML versions of the original corresponding
EPS encapsulated bitmaps.
* fig{-{normal,rs}-processing,_topologies_{rs,full}}.png: new
files, png exports by dia of the source dia diagrammes above.
* fig{-{normal,rs}-processing,_topologies_{rs,full}}.eps: removed,
replaced by above dia source.
* routeserver.texi: remove extension in image macros.
* quagga.info: updated build
* Makefile.am: Add rules to build eps (using 'convert'), png (using
dia). Add figures_BUILT_SOURCES to extra_dist to avoid the
dependency on dia :) (amongst other things) for dist users.
|
|
it's not for debug.
* rt_netlink.c (netlink_talk): Don't assume we use netlink_cmd
although we do now actually.
* rt_netlink.c (netlink_route, netlink_route_multipath): Always use
netlink_cmd to send messages to the kernel.
[backport candidate]
|
|
* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging
is turned on.
[backport candidate]
|