summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| * | ospf6d: justify some ABR debug codeDenis Ovsienko2011-08-271-2/+4
| | | | | | | | | | | | | | | * ospf6_abr.c * ospf6_abr_examin_summary(): only fill "buf" when it is used
* | | Fix broken prefix-list handling in bgpdChris Hall2012-02-2915-1041/+1193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some changes to symtab.c had broken the symbol reference handling for prefix-lists in plist.c This commit further "improves" the symbol table functions, to support current use rather better. One key change is that the symbol table supports the notion of a symbol which is "set", so has some value other than its name. In the case of prefix-lists, a prefix-list is "set" when there is at least one (valid) entry or a description has been set. Changes include: * small changes in bgpd/bgp_clist.c where symbol table function names have changed and other small differences. * similarly in bgpd/bgp_peer_index.c, but here also clarified ownership of the peer index entries, and ensured that the symbol table stuff does *not* free same. * in bgpd/bgp_route.c fixed the handling of references to prefix-lists. Newer symbol handling more clearly identifies when a symbol has some value "set". * in bgpd/bgp_vty.c similarly, when showing state of filtering the "*" against a prefix-list means it is "set". * in lib/plist.c -- adjust to newer symbol table stuff. Fix issues will add_hook and delete_hook. Changed lookup so that if plist is not set, then lookup will return not-found -- so works as before (!). * adjusted test for symbol stuff.
* | | Reverse erroneous part of previous fix for bug in zclient.Chris Hall2012-02-271-2/+0
| | | | | | | | | | | | Fix was in two parts. One part, correct. Second part, not.
* | | Reviewed and improved vty and (particularly) vtysh.Chris Hall2012-02-2631-1196/+1585
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * fix stream_put() to accept NULL src (again). * changed how vty terminal reports time-out and end-of-file, and made --more-- show the same as ordinary cli. * tighten on or two stream functions, to cope if for some reason the getp > endp or endp > size. * update documentation in vio_lines.c * fixed (potential) bug which would have tripped up --more-- if were to be required while outputting notification for a cancel operation. * as a new command loop is set up, make sure all start in vst_cmd_running_executing, so that output will be dispatched. * fix uty_std_out_push() and uty_vtysh_out_push to take notice of vst_cmd_running and vst_cmd_executing and change to vst_cmd_complete as required. * fix handling of hold_mark in VOUT_TERM obuf an line control. * fix various state related issues for vtysh server and the vtysh itself. * when vtysh connects to a daemon, the daemon responds with its name and version number. TBD: the vtysh to check that version is as expected ! * clarified handling of errors in vtysh... distinguishing errors reported by the client daemon, and errors in the mechanics of talking to the client daemon. ~
* | | Fix bug in stream_put_ipv4()Chris Hall2012-02-246-433/+1003
| | | | | | | | | | | | | | | | | | | | | | | | Revised stream functions and built more throrough test program for same. Introduced functions in prefix.c to support both stream_put_prefix() and stream_get_prefix() -- ensuring that does not exceed possible sizes and does not output or input any bits beyond the prefix length.
* | | Fix zprivs_init for when have capabilities and *not* --dryrun.Chris Hall2012-02-231-2/+4
| | |
* | | Fix: "--more--" and "no ip prefix-list fred"Chris Hall2012-02-223-63/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, fix compilation of privs.c when HAVE_CAPABILITIES. Wiping of "--more--" was issuing twice as many BS as required. (Oddly, some telnet programs tollerated this !) "no ip prefix-list fred" could hit a SEGV if there are no references to the prefix-list.
* | | Do not install "end" command in nodes where it has no effect.Chris Hall2012-02-224-32/+65
| | | | | | | | | | | | | | | | | | | | | | | | In particular, do not install in VIEW_NODE, where it prevents "en" being a short form of "enable". Also: change privilege handling so that can run bgpd --dryrun without needing to be a privileged user.
* | | Fix reading encrypted password from config and "pthreads on" commandChris Hall2012-02-2116-732/+718
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also: * re-organise vty output such that never blocks while executing a command -- but does wait/block between commands, so that all output associated with a command has completed before starts to execute the next. * make raising exception always signal the command loop, and revise code so that (a) signal is clearly secondary, and (b) that actual signal value no longer really matters. * fix timeout handling for pipe returns when only the pipe return and the pipe stderr return are left. * simplify the handling of blocking for pipes.
* | | Fix failure to build under --disable-rtadvChris Hall2012-02-213-0/+9
| | |
* | | vtysh partly restored. bgpd not crashing on over-size messages.Chris Hall2012-02-19219-22620/+33146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NB: this is a partial interim version -- NOT for production. Reinstate vtysh. In bgpd: cope better with generating oversize messages. The "pipework" branch is no more. There is now "euro_ix" and "euro_ix_b", where 'b' stands for 'bleedin'. The "pipework" is currently in 'bleedin'. Version updated to: 0.99.18ex20b Major changes in this commit: * modified bgpd to avoid crashing if an oversize message is created. At present, any oversize messages are simply discarded. This may be a mistake... since it is possible that some routes that should have been withdrawn are not. TBA. The stream lib facilities have been overhauled to may this easier. * restoring vtysh. At present the vtysh is thought to work, except that it does not currently create integrated configuration files. For the time being, *only* the following compile: lib, bgpd, zebra, vtysh, tests All other daemons will fail to compile, and must be disabled.
* | | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bChris Hall2011-09-0811-483/+617
|\ \ \
| * | | Further simplification of CLI state handling.Chris Hall2011-09-0811-483/+617
| | | | | | | | | | | | | | | | Covering corner cases and reducing ambiguity.
* | | | Fix formatting of memory region "show" when no memory_trackerChris Hall2011-09-081-9/+12
| | | |
* | | | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bex19bChris Hall2011-09-0613-778/+905
|\| | | | | | | | | | | | | | | Updated version to v0.99.18ex19b.
| * | | Further improvements to "pipework".ex19pChris Hall2011-09-0613-778/+905
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Version advanced to 0.99.18ex19p. Fixed occasional failure to immediately display prompt after previous command output was abandonned by ^C, particularly with "--more--". Completely removed the "~" temporary prompt, and simplified some logic. Added indication of pthread running to "show version".
* | | | Update the scaled number output and memory show commands.Chris Hall2011-09-0611-1063/+1768
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Functions to output scaled decimal and binary numbers were implemented for memory show commands. Those have been generalised and placed in the qfstring.c. The memory show commands have been updated to use the newer functions, and a small test program for those has been implemeted. Other small updates to qfstring.c, qstring.c and qpath.c.
* | | | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bChris Hall2011-09-055-69/+101
|\| | |
| * | | Improve scheduling of background tasks in qnexus.Chris Hall2011-09-051-55/+76
| | | |
| * | | Work around issues with IPV6_MINHOPCOUNT -- -DNO_LINUX_IN6_HChris Hall2011-09-052-10/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On GNU_LINUX IPV6_MINHOPCOUNT is defined in linux/in6.h. Unfortunately, that will not always compile due to clashes with netinet/in.h !! So, as a work-around -DNO_LINUX_IN6_H disables the inclusion of linux/in6.h -- which avoids the compilation issue, but turns off IPV6_MINHOPCOUNT.
| * | | Fix absolute paths in bgp dump configuration commands.Chris Hall2011-09-051-8/+8
| | | |
* | | | Merge branch 'pipework' of /git/quagga.euro-ix into euro_ix_bChris Hall2011-09-0554-1169/+3090
|\| | |
| * | | Fix display of times for "show nexus xxx"Chris Hall2011-09-021-20/+22
| | | |
| * | | Changed gcc options to -std=c99 and -O2, and tighted warnings.Chris Hall2011-09-0230-429/+562
| | | | | | | | | | | | | | | | Some small changes to accomodate same.
| * | | Merging of euro_ix branch into pipework.Chris Hall2011-09-0223-737/+2522
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring in fixes for bgp dumping with pthreaded BGP Engine. Bring in new "show nexus xxx" command. Fix removal of '~' prompt.
| * | | Fix qassert()Chris Hall2011-09-011-1/+1
| | | |
| * | | Merge branch 'euro_ix' of /git/quagga.euro-ix into pipeworkChris Hall2011-08-261-2/+2
| |\ \ \
| | * | | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT (II)Chris Hall2011-08-261-1/+1
| | | | |
| | * | | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | | | |
| * | | | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | | | |
* | | | | Fix compilation of sockopt.c when no IP_MINTTL or IPV6_MINHOPCOUNT.Chris Hall2011-08-261-2/+4
| | | | |
* | | | | Updated the "symbol table" and added AVL treeChris Hall2011-08-2620-1101/+4615
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Modified the symbol table so that the name of the symbol is now a property of its value -- which simplifies some of the semantics, because the name no longer has a separate existence (a name which refers to an empty or undefined value is now a matter for the value, not for the symbol table). It also allows for the symbol table to be used where the value and the name are almost indistinguishable. Introduced AVL tree to support large prefix lists, routemaps, etc. etc. Updated testsymtab and added testavl. Updated exiting use of the symbol table.
* | | | Merge branch 'euro_ix' of /git/quagga.euro-ix into pipeworkex18pChris Hall2011-08-1267-1911/+3347
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge with euro_ix branch v0.99.18ex17. Update version to: 0.99.18ex18p Of particular note: * includes support for GTSM: neighbor ... ttl-security hops X no neighbor ... ttl-security hops X where X is 1-254. For usual case of immediately connected peer, X == 1. Cannot set ttl-security while ebgp-multihop is set, and vice-versa. If underlying O/S does not support GTSM, then will set ttl as per ebgp-multihop. In passing, have fixed various bugs in the main Quagga branch. * initial support for draft-ietf-idr-optional-transitive Does not yet support "neighbor-complete" flag. * main Quagga now uses TCP_CORK and permanent non-blocking Do not beleive TCP_CORK to be necessary for euro_ix code... which has a different buffering strategy. The euro_ix code already runs sockets permanently non-blocking. * various fixes to attribute intern/unintern Trying to remove memory leaks. Nobody seems convinced that this has been perfected, yet. * fixes for ospfd and ospf6d issues. Up to date with master branch up to: commit 538cb284864c17de66152a5236db4cd80e3e7639 Merge: 036a6e6 8ced4e8 Author: Paul Jakma <paul@quagga.net> Date: Fri Jul 29 18:21:50 2011 +0100
| * | | Merge with main Quagga source as of 29-Jul-2011.ex17Chris Hall2011-08-1266-1903/+3299
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create euro_ix branch. Update version to: 0.99.18ex17 Of particular note: * includes support for GTSM: neighbor ... ttl-security hops X no neighbor ... ttl-security hops X where X is 1-254. For usual case of immediately connected peer, X == 1. Cannot set ttl-security while ebgp-multihop is set, and vice-versa. If underlying O/S does not support GTSM, then will set ttl as per ebgp-multihop. In passing, have fixed various bugs in the main Quagga branch. * initial support for draft-ietf-idr-optional-transitive Does not yet support "neighbor-complete" flag. * main Quagga now uses TCP_CORK and permanent non-blocking Do not beleive TCP_CORK to be necessary for euro_ix code... which has a different buffering strategy. The euro_ix code already runs sockets permanently non-blocking. * various fixes to attribute intern/unintern Trying to remove memory leaks. Nobody seems convinced that this has been perfected, yet. * fixes for ospfd and ospf6d issues. Up to date with master branch up to: commit 538cb284864c17de66152a5236db4cd80e3e7639 Merge: 036a6e6 8ced4e8 Author: Paul Jakma <paul@quagga.net> Date: Fri Jul 29 18:21:50 2011 +0100
| | * | Merge remote-tracking branch 'origin/master'Paul Jakma2011-07-296-3/+82
| | |\ \
| | | * \ Merge remote-tracking branch 'polymorf/master'Greg Troxel2011-07-131-0/+16
| | | |\ \
| | | | * | Fix ip_len byte order in DragonFly's raw socketDavid BÉRARD2010-05-111-0/+16
| | | | | |
| | | * | | fix typoRoman Hoog Antink2011-06-281-1/+1
| | | | | |
| | | * | | Omit --opaque-lsa from build (now default).Greg Troxel2011-06-281-1/+3
| | | | | |
| | | * | | ospf6d: copy "mtu-ignore" option from ospfdDmitrij Tejblum2011-04-223-1/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "mtu-ignore" is an option ospfd used to mimic from the vendor's implementation, now ospf6d will also implement it. * ospf6_interface.h: extend ospf6_interface structure by one flag * ospf6_interface.c: (ipv6_ospf6_mtu_ignore, no_ipv6_ospf6_mtu_ignore): new declarations; (ospf6_interface_create): show initial value for consistency; (ospf6_interface_show): print flag status * ospf6_message.c: (ospf6_dbdesc_recv): consider interface-specific flag when checking MTU
| | * | | | Merge branch 'attr-errors'Paul Jakma2011-07-2915-455/+880
| | |\ \ \ \ | | | |/ / / | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Contains BGP fixes: - set extcommunity crash: tihs patch tries to make the refcounting more robust but does not fully solve the problem, sadly. - BGP attribute error handling: Little testing.
| | | * | | bgpd: Implement revised error handling for partial optional/trans. attributesPaul Jakma2011-03-215-239/+393
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * BGP error handling generally boils down to "reset session". This was fine when all BGP speakers pretty much understood all BGP messages. However the increasing deployment of new attribute types has shown this approach to cause problems, in particular where a new attribute type is "tunneled" over some speakers which do not understand it, and then arrives at a speaker which does but considers it malformed (e.g. corruption along the way, or because of early implementation bugs/interop issues). To mitigate this drafts before the IDR (likely to be adopted) propose to treat errors in partial (i.e. not understood by neighbour), optional transitive attributes, when received from eBGP peers, as withdrawing only the NLRIs in the affected UPDATE, rather than causing the entire session to be reset. See: http://tools.ietf.org/html/draft-scudder-idr-optional-transitive * bgp_aspath.c: (assegments_parse) Replace the "NULL means valid, 0-length OR an error" return value with an error code - instead taking pointer to result structure as arg. (aspath_parse) adjust to suit previous change, but here NULL really does mean error in the external interface. * bgp_attr.h (bgp_attr_parse) use an explictly typed and enumerated value to indicate return result. (bgp_attr_unintern_sub) cleans up just the members of an attr, but not the attr itself, for benefit of those who use a stack-local attr. * bgp_attr.c: (bgp_attr_unintern_sub) split out from bgp_attr_unintern (bgp_attr_unintern) as previous. (bgp_attr_malformed) helper function to centralise decisions on how to handle errors in attributes. (bgp_attr_{aspathlimit,origin,etc..}) Use bgp_attr_malformed. (bgp_attr_aspathlimit) Subcode for error specifc to this attr should be BGP_NOTIFY_UPDATE_OPT_ATTR_ERR. (bgp_attr_as4_path) be more rigorous about checks, ala bgp_attr_as_path. (bgp_attr_parse) Adjust to deal with the additional error level that bgp_attr_ parsers can raise, and also similarly return appropriate error back up to (bgp_update_receive). Try to avoid leaking as4_path. * bgp_packet.c: (bgp_update_receive) Adjust to deal with BGP_ATTR_PARSE_WITHDRAW error level from bgp_attr_parse, which should lead to a withdraw, by making the attribute parameter in call to (bgp_nlri_parse) conditional on the error, so the update case morphs also into a withdraw. Use bgp_attr_unintern_sub from above, instead of doing this itself. Fix error case returns which were not calling bgp_attr_unintern_sub and probably leaking memory. * tests/aspath_test.c: Fix to work for null return with bad segments
| | | * | | tools/multiple-bgpd.sh: set some community attributes to help test themPaul Jakma2011-03-211-1/+8
| | | | | |
| | | * | | bgpd: Try fix extcommunity resource allocation probs, particularly with 'set ↵Paul Jakma2011-03-2113-109/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | extcom..' * Extended communities has some kind of resource allocation problem which causes a double-free if the 'set extcommunity ...' command is used. Try fix by properly interning extcommunities. Also, more generally, make unintern functions take a double pointer so they can NULL out callers references - a usefully defensive programming pattern for functions which make refs invalid. Sadly, this patch doesn't fix the problem entirely - crashes still occur on session clear. * bgp_ecommunity.h: (ecommunity_{free,unintern}) take double pointer args. * bgp_community.h: (community_unintern) ditto * bgp_attr.h: (bgp_attr_intern) ditto * bgp_aspath.h: (bgp_aspath.h) ditto * (general) update all callers of above * bgp_routemap.c: (route_set_ecommunity_{rt,soo}) intern the new extcom added to the attr, and unintern any old one. (route_set_ecommunity_{rt,soo}_compile) intern the extcom to be used for the route-map set. (route_set_ecommunity_*_free) unintern to match, instead of free (route_set_ecommunity_soo) Do as _rt does and don't just leak any pre-existing community, add to it (is additive right though?)
| | | * | | tests: Extend aspath_test.c with cases for invalid segments & attributesPaul Jakma2011-03-211-10/+281
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * aspath_test.c: Add more test cases. In particular ones to cover the last invalid-segment problem. Also add ability to specify aspath attribute headers and test them somewhat. NB: It's obvious this test has not been run for a year by anyone, despite 2 non-trivial commits to bgpd aspath code.
| | | * | | bgpd: Rollback some of the changes made for invalid AS_PATH segment fixPaul Jakma2011-03-213-128/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the changes made in commit cddb8112b80fa9867156c637d63e6e79eeac67bb don't work particularly well for other changes that need to be made to address BGP attribute error handling problems. In particular, returning a pointer from complex attribute data parsing functions will not suffice to express the require range of return status conditions. * bgp_aspath.c: (assegments_parse) Rollback to a more minimal set of changes to fix the original problem. (aspath_parse) Slightly needless pushing around of code, and taking 2 parameters to say whether ot use 2 or 4 byte encoding seems unnecessary. * bgp_attr.c: (bgp_attr_as{,4}path) Rollback, in preparation for BGP attribute error handling update.
| | * | | | zebra: trivial warning fixPaul Jakma2011-04-131-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | * zebra_routemap.c: (route_set_src) get rid of the dummy family variable.
| | * | | | bgpd: trivial format / warning fixesPaul Jakma2011-04-133-27/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bgp_aspath.c: (assegments_parse) just bail early if length doesn't match and fix the formatting. * bgp_network.c: add include needed for set_nonblocking * bgp_packet.c: formatting
| | * | | | ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API changePaul Jakma2011-04-134-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ospf_apiserver.{c,h}: (ospf_apiserver_lsa_refresher) refreshers must now return the refreshed LSA. * ospf_te.{c,h}: (ospf_mpls_te_lsa_refresh) ditto * ospf_api.c: trivial compiler warning fix
| | * | | | Fix authorship of previous ospf6d commitPaul Jakma2011-04-040-0/+0
| | |\ \ \ \