summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [0.98] Version bump to 0.98.6quagga.0.98.6.releasepaul2006-05-084-220/+295
| | | | | | | 2006-05-08 Paul Jakma <paul.jakma@sun.com> * configure.ac: Bump version to 0.98.6. * quagga.info: Version bump (autogenerated)
* [ripngd] bug #242, fix crash in routemap, ipv6 stored in in_addr.paul2006-05-082-1/+7
| | | | | | | | | | 2006-05-08 Paul Jakma <paul.jakma@sun.com> * ripng_routemap.c: (route_set_ipv6_nexthop_local_compile) bug #242, s/in_addr/in6_addr to fix crash. Thanks to jithinvachery+quagga@gmail.com. [backport of f928d51e96e2832d5e3da088a9ab43f42cac52b2]
* [ospfd] Fix merge errors in previous commitpaul2006-05-042-1/+2
| | | | | | 2006-04-03 Paul Jakma <paul.jakma@sun.com> * ospf_{nsm,interface}.c: Fix merge errors from previous commit.
* [doc] Add test on 0.98 specific RIP authentication changespaul2006-05-042-1/+22
| | | | | | | 2006-05-04 Paul Jakma <paul.jakma@sun.com> * ripd.texi: Add text on 0.98 specific changes to behaviour of authentication mode configuration.
* [ripd] 0.98 specific command changes, allow no-auth to be setpaul2006-05-042-8/+18
| | | | | | | | | | 2006-05-04 Paul Jakma <paul.jakma@sun.com> * ripd_interface.c: (general) 0.98 specific command changes for authentication, to allow no-auth to be set, compatibly. (no_ip_rip_authentication_mode) should set RIP_NO_AUTH (rip_interface_config_write) Explicitely write out the authentication mode, including RIP_NO_AUTH.
* [docs] Update ripd docs on version and authentication, see bugs #261,#262paul2006-05-042-31/+86
| | | | | | | | | | | | | | 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. [backport of 2e536300103d9639dbb2315d5144a901d2a724ed]
* [ripd] bugs #261, #262: Fix RIPv1 info-leak and unauthenticated route updatespaul2006-05-043-108/+131
| | | | | | | | | | | | | | | | | | | | 2006-05-04 Paul Jakma <paul.jakma@sun.com> * (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. [backport of 70ad333fdb3053f40579532ad2e7d3bab2274803]
* [ospfd] Fix virtual-link handling in nbrs route-table, exposed by bug#234 fixpaul2006-05-042-0/+18
| | | | | | | | | | | | | | | | | | | | | 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. [backport of 478aab9812fe06d77fd2f4e0b773a6e1ede18a3a]
* [ospfd] Bug #234. Fix nbr_self reinitialisation after down/up.paul2006-03-303-47/+19
| | | | | | | | | | | | | | | | | | | 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. [backport of 1a643f88b238147dc2cfbe137d9feae7e3f3546e]
* [ospfd] fix undefined effect expressionpaul2006-03-302-1/+7
| | | | | | | | | 2006-01-10 Juris Kalnins <juris@mt.lv> * ospf_packet.c: (ospf_make_md5_digest) fix odd, if not undefined effect, assignment of an increment expression. [backport of 818e56cf2723843377d2881a6b81b8adc0fe9160]
* [bgpd] Fix infinite loop in community_str2compaul2006-03-302-6/+20
| | | | | | | | | | | | | | | | 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. [backport from 15aa6a1a732eef1049dbc64d7ede9236772cafcf]
* [bug #89] Fix leak of community when set community is usedpaul2006-03-302-2/+17
| | | | | | | | | | | 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. [backport of aa94ca86ba0323d61fc3bc9b881718567ee943b3]
* [ospfd] Fix failure of Fletcher checksum with certain compilerspaul2006-03-302-1/+8
| | | | | | | | | | | 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>. [backport of 575880b57d08bd67d22553ea11a7ff770571c28c]
* [ospfd] fix rare leak of struct connected, in an error path.paul2006-03-302-1/+9
| | | | | | | | | 2006-01-10 Juris Kalnins <juris@mt.lv> * ospf_zebra.c: (ospf_interface_address_delete) fix rare leak of struct connected in an error case. [backport of 98429f6d07b0bac006eb14aea13c1d989fc835ed]
* [ospfd] ignore loopbacks for received interface validationpaul2006-03-302-0/+13
| | | | | | | | | | | | | | 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. [backport of 2f621e44ddd07c3c99b19ac3902933d7c407a50e]
* [ospfd] Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBERpaul2006-03-302-1/+6
| | | | | | | | | 2006-03-23 Steve Lawson <steve.lawson@aheadcomusa.com> * ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBER [backport of f6cd7c69f25f7e]
* [lib] 'show route-map' should print call action seperate from exit policypaul2006-03-302-10/+13
| | | | | | | | 2005-11-12 Paul Jakma <paul.jakma@sun.com> * routemap.c: (vty_show_route_map_entry) call action is seperate from exit action, latter should still be printed regardless of whether a call is specified.
* [redhat] Update spec file with some changes from Fedora spec filepaul2006-03-301-10/+34
| | | | | | | | | | | * Thu Sep 12 2005 Paul Jakma <paul@dishone.st> - Steal some changes from Fedora spec file: - Add with_rtadv variable - Test for groups/users with getent before group/user adding - Readline need not be an explicit prerequisite - install-info delete should be postun, not preun [backport from e7cd37bf334c6a4c0a3db6a0cfeb97674f820503]
* [0.98] Make "show ip ospf neighbor xxx" commands work.paul2006-03-302-33/+35
|\ | | | | | | | | | | | | | | | | 2005-08-21 Hasso Tepper <hasso at quagga.net> * ospf_vty.c: Make "show ip ospf neighbor xxx" commands work. Interface should be specified by name now. [backported from HEAD by Paul Jakma]
| * [lib] command.c exports host global, add it to header.paul2006-03-302-1/+4
| | | | | | | | | | | | | | | | | | | | 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
| * [lib] Trivial: fix line lengths of a comment in workqueu.cpaul2006-03-302-2/+4
| | | | | | | | | | | | 2006-03-30 Paul Jakma <paul.jakma@sun.com> * workqueue.c: (work_queue_run) fix line length of comment
| * [lib] Mark most arguments in DEFUN_CMD_FUNC_TEXT as potentially unusedpaul2006-03-302-1/+9
| | | | | | | | | | | | | | 2006-03-30 Paul Jakma <paul.jakma@sun.com> * command.h: (DEFUN_CMD_FUNC_TEXT) Annotate arguments as potentially being unused.
| * [bgpd] Fix infinite loop in community_str2compaul2006-03-302-6/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [TODO] Note MED functionality we should implementpaul2006-03-302-0/+6
| | | | | | | | | | | | | | 2006-03-30 Paul Jakma <paul.jakma@sun.com> * TODO: Add reminder for useful MED functionality we should implement.
| * [ospfd] Fix failure of Fletcher checksum with certain compilerspaul2006-03-302-1/+8
| | | | | | | | | | | | | | | | | | 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>.
| * [lib] fix gensub call in memtypes.awk to pass "g", not g.paul2006-03-302-2/+6
| | | | | | | | | | | | 2006-03-27 Paul Jakma <paul.jakma@sun.com> * memtypes.awk: Fix gensub call, g should be a string..
| * [lib] status field/flags no longer used in struct workqueuepaul2006-03-302-3/+5
| | | | | | | | | | | | | | 2006-03-25 Paul Jakma <paul.jakma@sun.com> * workqueue.h: (struct work_queue) Remove status field and state flag, no longer used.
| * [ospfd] ignore loopbacks for received interface validationpaul2006-03-302-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [ospfd] Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBERpaul2006-03-302-1/+6
| | | | | | | | | | | | | | 2006-03-23 Steve Lawson <steve.lawson@aheadcomusa.com> * ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBER
| * [bgpd] release peer specific clear queue in peer_freepaul2006-03-302-1/+9
| | | | | | | | | | | | | | 2006-03-22 Paul Jakma <paul.jakma@sun.com> * bgpd.c: (peer_free) release the per-peer workqueue when freeing the peer.
| * [bgpd] trivial: use a distinct memtype for struct bgp_synchronizepaul2006-03-304-1/+9
| | | | | | | | | | | | | | | | 2006-03-19 Paul Jakma <paul.jakma@sun.com> * memtypes.c: Add MTYPE_BGP_SYNCHRONISE. * bgp_advertise.c: Use a distinct memory type for struct bgp_synchronize.
| * [bgpd] Add 'show bgp memory' for stats on fixed-size allocations in bgpdpaul2006-03-302-19/+189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [bgpd] Include header dependency in bgp_nexthop.hpaul2006-03-302-0/+7
| | | | | | | | | | | | | | 2006-03-19 Paul Jakma <paul.jakma@sun.com> * bgp_nexthop.h: Include if.h as a dependent header, for struct connected.
| * [lib] fix libtool version argument in Makefile.ampaul2006-03-302-1/+5
| | | | | | | | | | | | 2006-03-16 Paul Jakma <paul.jakma@sun.com> * Makefile.am: Fix -version-info argument.
| * [lib/memory] Add mallinfo supportpaul2006-03-305-1/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [solaris] revert previous update of manifest install pathpaul2006-03-302-2/+7
| | | | | | | | | | | | | | | | 2006-03-16 Paul Jakma <paul.jakma@sun.com> * prototype.smf.in: Oops, continue to install manifest to var/svc/manifest/network for now. * Changelog: fix lack of trailing newline
| * [tests] fix heavy-wq, add redundant AS_SET test and statics to aspath_testpaul2006-03-303-4/+25
| | | | | | | | | | | | | | | | | | | | 2006-03-16 Paul Jakma <paul.jakma@sun.com> * heavy-wq.c: (heavy_wq_init) delay is gone from workqueue spec. * aspath_test.c: (test_segments) Add an AS_SET with redundant ASNs. ({empty_prepend,prepend,parse}_test) add static qualifiers
| * [solaris] SMF manifest, method and depend updates.paul2006-03-305-271/+589
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [zebra] arrange structs in padding-efficient manner and remove unused fieldpaul2006-03-302-18/+23
| | | | | | | | | | | | | | | | 2006-02-09 Paul Jakma <paul.jakma@sun.com> * rib.h: (struct {rib,nexthop}) Rearrange fields to avoid needless padding. (struct rib) Remove the indirect pointer, not used anywhere!
| * [lib/privs] Changing user IDs should be done before dropping privilegespaul2006-03-302-18/+27
| | | | | | | | | | | | | | | | | | 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.
| * [bgpd] rearrange some structs for less padding, stats for table/attrs.paul2006-03-306-55/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [lib] export show_address_cmd debug command in if.hpaul2006-03-062-0/+6
| | | | | | | | | | | | | | 2006-03-06 Paul Jakma <paul.jakma@sun.com> * if.h: export show_address_cmd, for anyone who wishes to use it.
| * [bgpd] Start off FSM again once clearing finishes.paul2006-03-062-0/+8
| | | | | | | | | | | | | | 2006-03-03 Paul Jakma <paul.jakma@sun.com> * bgp_route.c: (bgp_clear_node_complete) Doh. When clearing is complete we need to kick off FSM again.
| * [lib/sockunion] trivial: use XSTRDUP.paul2006-02-212-2/+8
| | | | | | | | | | | | | | | | 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.
| * [bgpd] Add Clrng description to bgp summary state.paul2006-02-212-0/+4
| | | | | | | | | | | | | | 2006-02-21 Paul Jakma <paul.jakma@sun.com> * bgp_vty.c: (bgp_show_summary) Add a 'Clrng' sub-description to state of peer while it's suppressed due to clearing.
| * [bgpd] Record afi/safi in bgp_table. Serialise peer clear with FSM.paul2006-02-219-96/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [solaris] version depend files, auto-generate. Start zebra when needed.paul2006-02-199-21/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * [doc] Credit Jeroen Simonetti for contributing snmptrap.texipaul2006-02-193-179/+185
| | | | | | | | | | | | | | | | | | 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.
| * [bgpd] trivial readability fixpaul2006-02-182-2/+6
| | | | | | | | | | | | | | | | 2006-02-18 Paul Jakma <paul.jakma@sun.com> * bgp_route.c: (bgp_announce_check) trivial, move declaration of two local variables into the only block where they are used, to aid the reader.
| * [bug #89] Fix leak of community when set community is usedpaul2006-02-182-2/+17
| | | | | | | | | | | | | | | | | | 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.