Paul Jakma [Thu, 4 May 2006 07:37:37 +0000 (07:37 +0000)]
[docs] Update ripd docs on version and authentication, see bugs #261,#262
2006-05-04 Paul Jakma <paul.jakma@sun.com>
* ripd.texi: Add Version Control as a distinct section.
Expand Version Control section with overview text,
touching on insecurity of RIPv1 and referencing
authentication section, cleanup text of various version
commands.
RIP Authentication: Add overview text, refer to RIPv1 version
control, which is required to completely secure RIP.
* (general) Fixes for bugs #261 and 262. Thanks to
Konstantin V. Gavrilenko <kos@arhont.com> for the problem
reports, testing of a series of proposed patches and comment
on the proposed changes in behaviour.
* rip_interface.c: (ip_rip_authentication_mode_cmd) Parse all
of the command before making any changes to configured state.
* ripd.c: (rip_read) RIP version control should be absolute and
always apply, fixes bug #261 by allowing RIPv1 to be disabled.
Fix bug #262: If authentication is enabled, then
unauthenticated packets should not be accepted. We do however
make an exception for RIPv1 REQUEST packets, to which we will
reply as RIPv1 can now be disabled fully, to allow ripd to
still provide routing /information/ to simple devices.
Paul Jakma [Thu, 4 May 2006 07:32:57 +0000 (07:32 +0000)]
[ospfd] Fix SPF of virtual-links
2006-04-24 Paul Jakma <paul.jakma@sun.com>
* (general) More Virtual-link fixes, again with much help in
testing / debug from Juergen Kammer. Primarily in SPF.
* ospf_spf.h: Add guard. ospf_interface.h will include this
header.
* ospf_interface.h: Modify ospf_vl_lookup definition to take
struct ospf as argument, so as to allow for NULL area
argument.
(struct ospf_vl_data) Remove out_oi, instead add a struct
vertex_nexthop, to use as initial nexthop for backbone paths
through a vlink.
* ospf_interface.c: (ospf_vl_lookup) Modified to allow
NULL area to be passed to indicate "any" (first) area.
Add extra debug.
(ospf_vl_set_params) vl_oi -> nexthop. Add extra debug.
(ospf_vl_up_check) Fix debug, inet_ntoa returns a static
buffer..
* ospf_route.c: (ospf_intra_add_router) Vlinks dont go through
backbone, don't bother checking.
* ospf_spf.c: (static struct list vertex_list) Record vertices
that will need to be freed.
(cmp) Order network before router vertices, as required,
wasn't implemented.
(vertex_nexthop_free) Mild additional robustness check.
(vertex_parent_free) Take void argument, as this function
is passed as list deconstructor for vertex parent list.
(ospf_vertex_new) More debug. Set deconstructor for parent
list. Track allocated vertices on the vertex_list.
(ospf_vertex_free) Get rid of the tricky recursive cleanup of
vertices. Now frees only the given vertex.
(ospf_vertex_add_parent) Fix assert.
(ospf_nexthop_calculation) Fix calculation of nexthop for
VLink vertices, lookup the vl_data and use its previously
recorded nexthop information.
(ospf_spf_calculate) Vertices are freed simply by deleting
vertex_list nodes and letting ospf_vertex_free as deconstructor
work per-node.
(ospf_spf_calculate_timer) Trivial optimisation, leave
backbone SPF calculation till last to reduce SPF churn on
VLink updates.
* ospf_vty.c: (ospf_find_vl_data) update call to ospf_vl_lookup
(no_ospf_area_vlink_cmd) ditto.
(show_ip_ospf_interface_sub) For Vlinks, the peer address is
more interesting than the output interface.
Andrew J. Schorr [Fri, 28 Apr 2006 16:22:36 +0000 (16:22 +0000)]
[ripd] Fix logic to send updates on all connected addresses.
2006-04-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* ripd.c: (rip_update_process) Try to fix the logic for sending
an updated on each connected network. The new code will
attempt to send the update on each connected network, whereas
the previous code seemed to be attempting to avoid sending
more than one RIPv1 update on a given interface, but was coded
incorrectly. The actual effect of the old code was to send
an update only on the first connected address in the cases
where the interface is not multicast, or RIPv2 is not being used.
Paul Jakma [Mon, 3 Apr 2006 21:25:32 +0000 (21:25 +0000)]
[ospfd] Fix virtual-link handling in nbrs route-table, exposed by bug#234 fix
2006-04-03 Paul Jakma <paul.jakma@sun.com>
* (general) Fix issues with handling of Vlinks and entries
in the nbrs route-table which were highlighted by the
nsm/nbr_self fixes from bug #234. Many thanks to Juergen
Kammer for his help and efforts in testing out debug patches to
pinpoint the issue.
* ospf_interface.c: (ospf_vl_new) Add nbr_self for Vlink.
* ospf_neighbor.c: (ospf_nbr_key) new static function, helper
to create key in nbrs table for a given nbr.
(ospf_nbr_delete) Use ospf_nbr_key. Add an assert() to
document an expected state.
(ospf_nbr_add_self) Ditto.
(ospf_nbr_lookup_by_addr) Add an assert.
* ospf_nsm.c: (nsm_kill_nbr) Can never kill the nbr_self
psuedo-neighbour.
Paul Jakma [Mon, 3 Apr 2006 21:24:27 +0000 (21:24 +0000)]
[doc] document version zserv header, add txt figures, make pdf figs nicer
2006-03-31 Paul Jakma <paul.jakma@sun.com>
* fig*.txt: New files, txt versions of the diagrammes for the
info file.
* protocol.texi: Document the new version 1 header.
* routeserver.texi: Explicitly specify scaling widths for the
figures, only way to make them look reasonable, sadly.
Try fix some formatting and explicitely note lists as being
bulleted.
* Makefile.am: convert seems to do png to pdf just fine. No
need for intermediate eps.
Add txt figure expansions and list as dependencies and
EXTRA_DIST files.
Paul Jakma [Thu, 30 Mar 2006 15:00:30 +0000 (15:00 +0000)]
[lib] command.c exports host global, add it to header.
2006-03-14 Paul Jakma <paul.jakma@sun.com>
* privs.c: (zprivs_caps_init) Change user IDs before lowering
privileges, while this seems to work on Linux, on Solaris
it rightfully refuses due to PRIV_PROC_SETID having been
dropped.
* command.h: Add the struct host global exported from command.c
Paul Jakma [Thu, 30 Mar 2006 14:39:35 +0000 (14:39 +0000)]
[bgpd] Fix infinite loop in community_str2com
2006-03-30 Paul Jakma <paul.jakma@sun.com>
* bgp_community.c: (community_gettoken) Unknown token should
return NULL, to give a strong indication to callers that
the token no longer can be parsed, otherwise callers looping
on this function may have a hard time ending their loop.
(community_str2com) While loop around community_gettoken appears
to have been coded thinking that break statement would break
from the while{}, hence it could never exit for unknown token
case. Fix it to do..while, so it can use the NULL result from
community_gettoken easily.
Paul Jakma [Thu, 30 Mar 2006 14:34:31 +0000 (14:34 +0000)]
[ospfd] Fix failure of Fletcher checksum with certain compilers
2006-03-27 Paul Jakma <paul.jakma@sun.com>
* ospf_lsa.c: (ospf_lsa_checksum) Add an explicit cast to avoid
the ambiguities of ANSI and C99 C with respect to type
conversion. Detailed problem report and test case with
example data supplied by Dmitry Ivanov <dimss@telecentrs.lv>.
Paul Jakma [Thu, 30 Mar 2006 14:20:00 +0000 (14:20 +0000)]
[ospfd] ignore loopbacks for received interface validation
2006-03-25 Paul Jakma <paul.jakma@sun.com>
* ospf_interface.c: (ospf_if_lookup_recv_if) Ignore loopbacks,
we can never ever receive packets on those. Should fix
case where CARP is run with address in same subnet as real
interface. Problem report and diagnosis thanks to:
Landon Fuller <landonf@opendarwin.org>.
However, ospf_read() still can't deal deterministically with
multiple interfaces in same subnet.
Paul Jakma [Thu, 30 Mar 2006 14:05:23 +0000 (14:05 +0000)]
[bgpd] Add 'show bgp memory' for stats on fixed-size allocations in bgpd
2006-03-19 Paul Jakma <paul.jakma@sun.com>
* bgpd/bgp_vty.c: Add includes to get several structs we want
to provide usage statistics on.
(show_bgp_memory_cmd) Show memory usage stats for various
notable fixed size objects. Using mtype_stats_alloc and
mtype_memstr recently added to memory.c.
(bgp_show_summary) Report some additional stats specific to
the given BGP instance and/or AFI/SAFI such as table counts,
peers, rsclients and peer-groups.
(bgp_vty_init) Install show_bgp_memory_cmd.
Paul Jakma [Thu, 30 Mar 2006 13:53:59 +0000 (13:53 +0000)]
[lib/memory] Add mallinfo support
2006-02-15 Paul Jakma <paul.jakma@sun.com>
* configure.ac: Check for mallinfo, being careful to link test
so we can detect things like umem being used (which doesn't
provide a mallinfo).
* lib/memory.c: (mtype_memstr) new helper function to
return human friendly string for a byte count.
(mtype_stats_alloc) new function, for users to retrieve
number of objects allocated.
(show_memory_mallinfo) New function, show mallinfo statistics
if available.
(show_memory_all_cmd) Call show_memory_mallinfo, if mallinfo
is available.
* lib/memory.h: Export mtype_memstr and mtype_stats_alloc.
Provide a define for a reasonable buffer size for
mtype_memstr.
Paul Jakma [Thu, 30 Mar 2006 13:38:28 +0000 (13:38 +0000)]
[solaris] SMF manifest, method and depend updates.
2006-03-13 Alan Maguire <alan.maguire@sun.com>
* quagga.xml.in: Change the naming of services and instances.
network/routing/quagga:<daemon> may be neat and tidy, but
it's at odds with SMF convention elsewhere that demands
the service be named for what it does, and the instance name
describe the implementation (e.g. network/smtp:sendmail).
Remove call to method script for 'stop', SMF can do that
itself.
Enumerate the privileges required in the SMF manifest, with the
method_credential element.
Dont try provide seperate properties for each argument, it's
just tedious, particularly when they can no longer be
inherited from a common quagga service - use a single
"daemon-args" property, defaulting to -P 0.
Specify authorisation for the 'routeadm' utility and for
RBAC.
2006-03-13 Paul Jakma <paul.jakma@sun.com>
* quagga.init.in: Update to match SMF manifest changes.
If run from an SMF environment, assume method is start.
Offer a more tradition init script interface for pre-SMF.
Enable zebra for the link-state daemons.
Don't allow daemons to start in non-global zones, except
for bgpd - it doesn't have to care about underlying
networking much.
Remove all the svcprop calls, SMF or the user will supply any
arguments on the command-line.
* depend.smf.in: Add dependency on SUNWroute, which provides
routeadm, which provides /var/svc/manifest/network/routing
* prototype.smf.in: Install manifest to
var/svc/manifest/network/routing.
Paul Jakma [Thu, 30 Mar 2006 13:25:52 +0000 (13:25 +0000)]
[lib/privs] Changing user IDs should be done before dropping privileges
2006-03-14 Paul Jakma <paul.jakma@sun.com>
* privs.c: (zprivs_caps_init) Change user IDs before lowering
privileges, while this seems to work on Linux, on Solaris
it rightfully refuses due to PRIV_PROC_SETID having been
dropped.
Paul Jakma [Thu, 30 Mar 2006 13:20:48 +0000 (13:20 +0000)]
[bgpd] rearrange some structs for less padding, stats for table/attrs.
2006-03-12 Paul Jakma <paul.jakma@sun.com>
* bgp_attr.h: (struct attr) rearrange fields to avoid
wasted padding between them as much as possible.
(attr_count,attr_unknown_count) export new functions to
return number of counts of cached attributes.
* bgp_attr.c: (attr_count,attr_unknown_count) new functions to
return number of counts of cached attributes.
* bgp_route.h: (struct bgp_info) rearrange fields to avoid
wasted padding.
* bgp_table.h: (struct bgp_table) Add a count field, of number
of nodes in the table.
(struct bgp_node) rearrange fields to avoid
wasted padding between them, though I don't think there
was any in this case.
* bgp_table.c: (bgp_node_{delete,get}) Maintain the table node count.
(bgp_table_count) new function to access the table count.
Paul Jakma [Tue, 21 Feb 2006 01:37:14 +0000 (01:37 +0000)]
[lib/sockunion] trivial: use XSTRDUP.
2006-02-21 Paul Jakma <paul.jakma@sun.com>
* sockunion.c: (sockunion_{su2str,log}) Use XSTRDUP.
Particularly with _su2str, as that string gets XFREEd,
which can be annoying if run debug code in memory.c.
Paul Jakma [Tue, 21 Feb 2006 01:37:14 +0000 (01:37 +0000)]
[lib/sockunion] trivial: use XSTRDUP.
2006-02-21 Paul Jakma <paul.jakma@sun.com>
* sockunion.c: (sockunion_{su2str,log}) Use XSTRDUP.
Particularly with _su2str, as that string gets XFREEd,
which can be annoying if run debug code in memory.c.
Paul Jakma [Tue, 21 Feb 2006 01:09:01 +0000 (01:09 +0000)]
[bgpd] Record afi/safi in bgp_table. Serialise peer clear with FSM.
2006-02-21 Paul Jakma <paul.jakma@sun.com>
* bgpd.h: move the clear_node_queue to be peer specific.
Add a new peer status flag, PEER_STATUS_CLEARING.
* bgp_table.h: (struct bgp_table) Add fields to record afi,
safi of the table.
(bgp_table_init) Take afi and safi to create table for.
* bgp_table.c: (bgp_table_init) record the afi and safi.
* bgp_nexthop.c: Update all calls to bgp_table_init.
* bgp_vty.c: ditto.
* bgpd.c: ditto.
* bgp_fsm.c: (bgp_timer_set) dont bring up a session which is
clearing.
* bgp_route.c: (general) Update all bgp_table_init calls.
(bgp_process_{rsclient,main}) clear_node is serialised
via PEER_STATUS_CLEARING and fsm now.
(struct bgp_clear_node_queue) can be removed. struct bgp_node
can be the queue item data directly, as struct peer can be
kept in the new wq global user data and afi/safi can be
retrieved via bgp_node -> bgp_table.
(bgp_clear_route_node) fix to get peer via wq->spec.data,
afi/safi via bgp_node->bgp_table.
(bgp_clear_node_queue_del) no more item data to delete, only
unlock the bgp_node.
(bgp_clear_node_complete) only need to unset CLEARING flag
and unlock struct peer.
(bgp_clear_node_queue_init) queue attaches to struct peer
now. record peer name as queue name.
(bgp_clear_route_table) If queue transitions to active,
serialise clearing by setting PEER_STATUS_CLEARING rather
than plugging process queue, and lock peer while queue
active.
Update to pass only bgp_node as per-queue-item specific data.
Paul Jakma [Tue, 21 Feb 2006 01:09:01 +0000 (01:09 +0000)]
[bgpd] Record afi/safi in bgp_table. Serialise peer clear with FSM.
2006-02-21 Paul Jakma <paul.jakma@sun.com>
* bgpd.h: move the clear_node_queue to be peer specific.
Add a new peer status flag, PEER_STATUS_CLEARING.
* bgp_table.h: (struct bgp_table) Add fields to record afi,
safi of the table.
(bgp_table_init) Take afi and safi to create table for.
* bgp_table.c: (bgp_table_init) record the afi and safi.
* bgp_nexthop.c: Update all calls to bgp_table_init.
* bgp_vty.c: ditto.
* bgpd.c: ditto.
* bgp_fsm.c: (bgp_timer_set) dont bring up a session which is
clearing.
* bgp_route.c: (general) Update all bgp_table_init calls.
(bgp_process_{rsclient,main}) clear_node is serialised
via PEER_STATUS_CLEARING and fsm now.
(struct bgp_clear_node_queue) can be removed. struct bgp_node
can be the queue item data directly, as struct peer can be
kept in the new wq global user data and afi/safi can be
retrieved via bgp_node -> bgp_table.
(bgp_clear_route_node) fix to get peer via wq->spec.data,
afi/safi via bgp_node->bgp_table.
(bgp_clear_node_queue_del) no more item data to delete, only
unlock the bgp_node.
(bgp_clear_node_complete) only need to unset CLEARING flag
and unlock struct peer.
(bgp_clear_node_queue_init) queue attaches to struct peer
now. record peer name as queue name.
(bgp_clear_route_table) If queue transitions to active,
serialise clearing by setting PEER_STATUS_CLEARING rather
than plugging process queue, and lock peer while queue
active.
Update to pass only bgp_node as per-queue-item specific data.
Paul Jakma [Sun, 19 Feb 2006 18:59:26 +0000 (18:59 +0000)]
[solaris] version depend files, auto-generate. Start zebra when needed.
2006-02-19 Paul Jakma <paul.jakma@sun.com>
* depend.*: renamed to depend.*.in.
* depend.*.in: Add version dependency.
* Makefile.am: Generate depend.* from depend.*.in
Distribute the depend.*.in files rather than the depend.*
files.
* quagga.init.in: Enable zebra if one of the link-state
daemons is started.
Restart method is not required - SMF handles that.
* quagga.xml.in: Remove restart method details.
Paul Jakma [Sun, 19 Feb 2006 07:16:25 +0000 (07:16 +0000)]
[doc] Credit Jeroen Simonetti for contributing snmptrap.texi
2006-02-19 Paul Jakma <paul.jakma@sun.com>
* quagga.info: update auto-built file.
* ChangeLog: Fix old, existing entry for snmptrap.texi addition to
credit the author, who got in touch with me.
* snmptrap.texi: Add comment line with author's details.
Paul Jakma [Sat, 18 Feb 2006 10:49:04 +0000 (10:49 +0000)]
[bug #89] Fix leak of community when set community is used
2006-02-18 Paul Jakma <paul.jakma@sun.com>
* bgp_routemap.c: (route_set_community) Quick, very hacky, fix
for the set-community leak, bug #89. True fix will be to
detangle the web of *_intern caching and provide saner object
caching for Quagga, future work.
paul [Sun, 5 Feb 2006 17:51:19 +0000 (17:51 +0000)]
[bgpd] Fix peer prefix counts and make it slightly more robust
2006-02-05 Paul Jakma <paul.jakma@sun.com>
* bgp_route.h: Add BGP_INFO_COUNTED to track whether
prefix has been counted or not.
* bgp_route.c: (bgp_pcount_{inc,dec}rement) new helpers, to
centralise inc/dec of prefix-count,
(bgp_rib_remove) Remove pcount decrement, use helper.
(bgp_rib_withdraw) ditto, additionally use previous function
too.
(bgp_update_main) Use pcount helpers.
(bgp_clear_route_node) ditto, aslo REMOVED routes don't need
clearing.
paul [Thu, 2 Feb 2006 17:50:19 +0000 (17:50 +0000)]
[lib/workqueue] remove the useless 'delay' factor.
2006-02-02 Paul Jakma <paul.jakma@sun.com>
* workqueue.h: (struct work_queue) Remove the delay field.
It served no purpose and just introduced bad behaviour.
Should be excised before its allowed to escape into 1.0.
This removes need for the 'flood' and runs_since_clear
fields.
* workqueue.c: (general) excise delay factor between queue
runs, hence the 'flood' crap too.. See above.
* bgp_route.c: (bgp_{clear_node,process}_queue_init) delay
field is removed from workqueue spec.
paul [Tue, 31 Jan 2006 10:09:27 +0000 (10:09 +0000)]
[build system] cleanup --enable-snmp by removing ucd-snmp cruft
2006-01-31 Paul Jakma <paul.jakma@sun.com>
* configure.ac: Cleanup the hideous {net,ucd}-snmp section
by removing ucd-snmp. Hence fixing detection where
net-snmp is installed in /usr/local (Boris Kovalenko reported
the problem).
paul [Mon, 30 Jan 2006 14:08:51 +0000 (14:08 +0000)]
[zebra] Fix pauls zebra_rib/rib_process commit mistakes, again.
2006-01-30 Paul Jakma <paul.jakma@sun.com>
* zebra_rib.c: (rib_process) Fourth time lucky on this jinxed
commit, last commit had a hole that could allow connected
route selection to escape beyond the connected route logic.
This time I cross-checked with Gunnar first. ;)
paul [Wed, 25 Jan 2006 06:31:04 +0000 (06:31 +0000)]
[zebra] Fix incorrect changes made in RIB metric selection patch
2006-01-25 Gunnar Stigen <gunnar.stigen@axxessit.no>
* zebra_rib.c: (rib_process) Application of Gunnar's earlier
metric selection RIB change included incorrect tidy-ups made
by commiter. Fix. (NB: any errors here are again due to paul).
paul [Wed, 25 Jan 2006 04:31:40 +0000 (04:31 +0000)]
[zebra/solaris] Interface state fixups for Solaris.
2006-01-25 Paul Jakma <paul.jakma@sun.com>
* (general) More solaris PF_ROUTE hacks. The IFF_UP mangling
for solaris was incomplete on the PF_ROUTE side. fix it.
This changeset generally uglifies things. For some future
work I'd like to see the state changes seperated out from
the details of the code. Differences between systems might
then be slightly easier to implement without convoluted
hacks.
Changes should be specific to Solaris mostly, however
also tested on FreeBSD 6.
* if_ioctl_solaris.c: (interface_list_ioctl) ignore ~IFF_UP
interfaces, we'll hear about them when/if interface goes up
through NEWADDR.
Update flags explicitely at end of it to kick mangling.
* ioctl_solaris.c: (if_mangle_up) removed to interface.c, in
kind.
(lifreq_set_name) more convenient to take the string, than
the ifp.
(if_get_flags_direct) new convenience function, returns
the actual flags. Used during bootstrap in if_ioctl_solaris.c
to peek at flags of logical interfaces to see whether or
not to ignore them.
(if_get_flags) ENXIO means it's gone, poke out IFF_UP and
kick flags update.
(if_{un,}set_flags) flags argument should be 64bit.
* ioctl.{c,h}: flags argument should be 64bit.
* interface.h: Add a 'primary_state' flag to struct zebra_if on
SUNOS_5.
Export if_flags_update.
* interface.c: (if_flags_mangle) moved over in kind from
ioctl_solaris.c. Nasty kludge to try get IFF_UP right, as
much as is possible. Also keep track of the actual IFF_UP
value for the primary interface, so we can know when the ifp
must be deleted.
(if_flags_update) Take a new interface flags value, apply it
to the interface, and take whatever actions are required due
to flag transitions.
(if_refresh) flag state change logic is moved out to
previous. Just call if_get_flags, which will end up using
previous to effect the update of flags.
(if_flag_dump_vty) IFF_IPV{4,6} aren't interesting, VIRTUAL
and NOXMIT are though.
* kernel_socket.c: (ifm_read) Down->Down transitions shouldn't
create ifp, for non-IFANNOUNCE systems.
Use if_flags_update to update flags.
flag transition logic is now handled automatically through
if_flags_update.
(ifam_read) Better to call if_refresh *after* adding
connected addresses, as connected count affects IFF_UP on
IFF_UP-mangled systems.
On Solaris, Up->Down due to DELADDR means we need to delete
the ifp - the IFINFO might already have been and gone.
* rt.h: include other dependent headers.
* (general) various miscellaneous compiler warning fixes.
Remove redundant break statements from switch clauses
which return.
return from main, not exit, cause it annoys SOS.
Remove stray semi-colons which cause empty-statement
warnings.
* zebra/main.c: (sighup) remove private declaration of external
function.
paul [Wed, 18 Jan 2006 15:07:38 +0000 (15:07 +0000)]
[ospfd] Add support for oversized LSAs.
2006-01-18 Juergen Kammer <j.kammer@eurodata.de>
* ospf_lsa.c: (ospf_router_lsa_new) dont take reference to the
stream data until it is constructed, data reference is
volatile due to the potential resize in link_info_set
2006-01-18 Paul Jakma <paul.jakma@sun.com>
* ospf_lsa.c: (link_info_set) Resize the stream if required and
possible. Return number of links added.
(lsa_link_*_set) use return value from previous.
* ospf_lsa.h: Add OSPF_ROUTER_LSA_LINK_SIZE define.
paul [Tue, 17 Jan 2006 18:03:04 +0000 (18:03 +0000)]
[zebra] Record NEWADDR metric on PF_ROUTE, print CACHEINFO debug on netlink
2006-01-17 Paul Jakma <paul.jakma@sun.com>
* kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.
If interface is an alias, pass the alias as a label for
connected_add_ipv{4,6}.
* rt_netlink.c: (netlink_interface_addr) print out
IFA_CACHEINFO info, if present, when debugging kernel
messages.
paul [Tue, 17 Jan 2006 17:42:03 +0000 (17:42 +0000)]
[lib/vty] Add 'no terminal monitor' alias
2006-01-17 Paul Jakma <paul.jakma@sun.com>
* vty.c: (no_terminal_monitor_cmd) New ALIAS for
terminal_no_monitor, in the more normal negating format,
to be kind to my fingers.
(vty_init) install new ALIAS.
paul [Tue, 17 Jan 2006 17:33:46 +0000 (17:33 +0000)]
[zserv] fix up custom isisd and bgpd Zserv functions for new format.
2006-01-17 Paul Jakma <paul.jakma@sun.com>
* bgp_nexthop.c: (zlookup_read*) convert to new Zserv format.
(zlookup_query_ipv6) ditto.
(bgp_import_check) ditto.
* isis_zebra.c: (isis_zebra_route_add_ipv4) fix for new
zserv format.
paul [Tue, 17 Jan 2006 17:26:25 +0000 (17:26 +0000)]
[ripd] Fix verification of received MD5 authenticated packets
2006-01-17 Paul Jakma <paul.jakma@sun.com>
* ripd.c: (rip_auth_md5) remove pdigest, not needed.
Use a local buffer for the auth_str, where it can be properly
nul padded. Do so, hence fixing MD5 authentication.
Key looked up via key ring should be used in preference to
the RIPv1 simple password, not other way around.
No need to copy around digests, we can reference them
directly.
The auth_len received can't be trusted, some implementations
lie (e.g. older ripd).
(rip_auth_md5_ah_write) rename len local variable to doff
to be consistent with other functions.
(rip_auth_header_write) add the missing return.
(rip_auth_md5_set) use the proper constructs to access stream.
* bgp_aspath.c:
(aspath_snmp_pathseg) move the static stream pointer out to
file scope, so it can be freed.
(aspath_finish) new function, free aspath resources.
* bgp_aspath.h: (aspath_finish) export.
paul [Mon, 16 Jan 2006 11:13:27 +0000 (11:13 +0000)]
[bgpd] fix some leaks introduced in aspath rewrite.
2006-01-16 Paul Jakma <paul.jakma@sun.com>
* bgp_aspath.c: (assegment_append_asns) XREALLOC can return
NULL theoretically, take care not to lose the allocated data.
(aspath_hash_alloc) aspath_dup already set the aspath
string - fix leak.
(aspath_parse) aspath_hash_alloc dupes the entire aspath,
including segments, but we forgot to free the temporary
assegment.
paul [Mon, 16 Jan 2006 01:54:02 +0000 (01:54 +0000)]
[zserv] Extend Zserv header with version information and marker field
2006-01-16 Paul Jakma <paul.jakma@sun.com>
* lib/zclient.h: Update the Zserv protocol header with a version
field. Define the old command field to be a 'marker', to
allow old Zserv and updated Zserv to be differentiated.
Future updates will bump the version field obviously. New
command field is made wider. Try to stop using the
'zebra_size_t' typedef in the callbacks.
* lib/zclient.c: Update to read/write new format header.
* zebra/zserv.c: Ditto
paul [Wed, 11 Jan 2006 01:59:04 +0000 (01:59 +0000)]
[zserv] Update interface flags to 8 bytes wide.
2006-01-11 Paul Jakma <paul.jakma@sun.com>
* if.h: (struct interface) expand flags to 8 bytes.
* zclient.c: (zebra_interface_{add,state}_read) stream read of
interface flags now need to use stream_getq.
(zebra_interface_if_set_value) ditto
2006-01-11 Paul Jakma <paul.jakma@sun.com>
* zserv.c: (zsend_interface_{add,delete,update}) if flags are
8 bytes now, update to write out with stream_putq.
paul [Wed, 11 Jan 2006 01:38:25 +0000 (01:38 +0000)]
2006-01-11 Erik Smit <zoiah@zoiah.net>
* vtysh.c: (vtysh_config_from_file) fix regression from
a previous cleanup, vtysh_client.flags and cmd->daemon are
bitwise flags, bitwise & was meant to be used. Fixes breakage
of integrated config file reading.
paul [Wed, 11 Jan 2006 01:08:19 +0000 (01:08 +0000)]
[ospfd] Bug #234. Fix nbr_self reinitialisation after down/up.
2006-01-10 Len Sorensen <lennartsorensen@ruggedcom.com>
* (general) Bug #234, see also [quagga-dev 3902].
Fix problem with nbr_self not being properly reinitialised
when an interface comes up, after having been down.
Some re-arrangement done by Paul Jakma, any bugs introduced
on top of Len's suggested changes are his.
* ospf_neighbor.c: (ospf_nbr_add_self) centralise
initialisation of nbr_self parameters here.
* ospf_interface.c: (ospf_if_new) deleting initialisation of
parameters of nbr_self, just rely on call to
ospf_nbr_add_self.
(ospf_if_cleanup) ditto.
* ospfd.c: (ospf_network_run) ditto.
paul [Tue, 10 Jan 2006 20:34:46 +0000 (20:34 +0000)]
[ospfd] fix automatic router-id and network enable bug.
2006-01-10 Paul Jakma <paul.jakma@sun.com>
* ospfd.c: (ospf_network_run) checking to see if router-id
is set should be on ospf->router_id, not router_id_static.
This was causing ospfd to not start if router-id had not
been configured statically.
(ospf_if_update) ditto.
paul [Tue, 10 Jan 2006 14:35:19 +0000 (14:35 +0000)]
[stream] Add quad-word support and stream_resize
2006-01-10 Paul Jakma <paul.jakma@sun.com>
* stream.c: (stream_new) Allocate stream data as seperate object.
(stream_free) free the data.
(stream_resize) new function, resize stream to new size.
(stream_{get,put}q*) new functions to get/put quad word size
types.
* stream.h: (struct stream) make data seperate from the stream.
Export new stream_resize and quad-word get/put functions.
gdt [Thu, 29 Dec 2005 15:40:49 +0000 (15:40 +0000)]
shell script and hints for building on NetBSD. (gdt deleted private
copy by accident when getting a fresh checkout, and on recovery would
like to have it safe, and also it may be useful to others.)
paul [Sat, 26 Nov 2005 13:31:11 +0000 (13:31 +0000)]
[ospfd] rename graceful to deferred, fix a tiny compile warning.
2005-11-26 Paul Jakma <paul.jakma@sun.com>
* (general) s/graceful/deferred/ in all files, the former term
is confusing wrt OSPF Graceful-Restart.
* ospfd.c: (ospf_deferred_shutdown_check) dont return
a function which returns void. SOS complains about this.
(ospf_finish)
paul [Thu, 24 Nov 2005 15:15:17 +0000 (15:15 +0000)]
[zebra] Fix mistake in previous commit and further compile warnings/errors.
2005-11-24 Paul Jakma <paul.jakma@sun.com>
* kernel_socket.h: New header for functions exported to sysctl
methods.
* kernel_socket.c: include previous.
Remove static qualifier from couple of functions which are
used by sysctl methods, incorrectly added in previous commit.
Add a workaround for a bogus gcc warning to the RTA_ macros.
* Makefile.am: Add kernel_socket.h to noinst_HEADERS
* if_sysctl.c: include rt.h and kernel_socket.h and remove
redundant prototypes.
* rtread_sysctl.c: ditto.
(route_read) fix mismatch of return values.
* {rt,zserv,rib}.h: Include lib headers depended on.
paul [Thu, 24 Nov 2005 12:51:24 +0000 (12:51 +0000)]
[lib/zebra.h] fix Linux compile error
2005-11-24 Paul Jakma <paul.jakma@sun.com>
* zebra.h: s/u_int/unsigned int/, u_int is a BSD type, defining
__USE_BSD on Linux pulls in further things from netinet/ip.h
which dont preprocess for some reason. There is no C99
shorthand type directly equivalent to u_int afaict, so don't
use it.
paul [Wed, 23 Nov 2005 13:02:08 +0000 (13:02 +0000)]
[zebra] fix some small compile errors, mark several functions static
2005-11-23 Paul Jakma <paul.jakma@sun.com>
* (general) fix some small compile errors, and mark several
functions as static.
* kernel_socket.c: (ifan_read) should be static.
fix missing brackets.
(ifm_read,ifam_read,rtm_read_mesg,kernel_read) Make static
(ifam_read_mesg) make static. fix incorrect variable name.
(rtm_read) make static. Fix call to rib_delete_ipv4 which
should be rib_delete_ipv6.
(routing_socket,kernel_init) should be static. Void argument
should be specified as such, not left incomplete.
* rt_netlink.c: rt.h should be included, contains prototypes of
exported functions.
(kernel_delete_ipv6_old) fix sign of index argument.
* rt_socket.c: Exact same as previous. Also, make various
functions static.
* rtread_getmsg.c: Include zserv.h, which prototypes
route_read. Make static.
* rtread_sysctl.c: zserv.h and rt.h should be included.
fix definition of route_read.
paul [Wed, 23 Nov 2005 02:48:14 +0000 (02:48 +0000)]
[tests] Add empty-path and sequence+1ASN test data to aspath_test.c
2005-11-23 Paul Jakma <paul.jakma@sun.com>
* aspath_test.c: Add an empty aspath to test segments, and to
compare tests.
Add a segment identical to seq1, but with one extra asn.
Fix bogus free of stream in make_aspath for case where
no stream was allocated (empty path data).
paul [Sun, 20 Nov 2005 14:54:12 +0000 (14:54 +0000)]
2005-11-20 Paul Jakma <paul.jakma@sun.com>
* ospf_abr.c: (ospf_abr_announce_network_to_area) check
returned LSA of ospf_summary_lsa_refresh and print warning if
it failed.
(ospf_abr_announce_network_to_area) similar
(ospf_abr_announce_rtr_to_area) similar
* ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid.
(ospf_router_lsa_originate) similar
(ospf_router_lsa_refresh, ospf_network_lsa_new) similar
(ospf_summary_lsa_new) Check ID is valid.
(ospf_summary_lsa_originate) ditto, and check returned LSA from
previous function is !NULL.
(ospf_summary_lsa_refresh) check ospf_summary_lsa_new return
is !NULL.
(ospf_summary_asbr_lsa_new) ID valid check.
(ospf_summary_asbr_lsa_originate) similar.
paul [Sun, 20 Nov 2005 14:50:45 +0000 (14:50 +0000)]
2005-11-20 Paul Jakma <paul.jakma@sun.com>
* ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define
(struct ospf) remove the router_id timer thread.
remove export of ospf_router_id_update_timer.
* ospfd.c: (ospf_router_id_update) call ospf_if_update to
poke interfaces into action after ID has been configured.
(ospf_router_id_update_timer) removed.
(ospf_finish_final) t_router_id_update timer is gone.
(ospf_network_run) router-id update timer gone.
call ospf_router_id_update directly if ID not configured.
In the per-iface loop, don't ospf_if_up interfaces if
ID is still not configured. The update function will call
ospf_if_update anyway.
(ospf_if_update) ID update timer is gone. Just return if no
ID is set.
* ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no
timer needed.
* ospf_zebra.c: (ospf_router_id_update_zebra) call
ospf_router_id_update directly, not via timer.