summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-03-25vtysh: fix regexp for install_element() in babeldAng Way Chuang
2012-03-25babeld: add MP-specific zclient API fixDenis Ovsienko
Add proper initialization of SAFI field, which is present in the revisions of zapi_ipv4 and zapi_ipv6 structures specific to MP-BGP patchset. Without this change no Babel routes could make into zebra RIB.
2012-03-25babeld: change the modify route system.Matthieu Boutier
Zebra doesn't set errno to EEXIST if we add a route who was already in the kernel, so we always returned after just doing "add; delete". This patch fix the problem by doing "delete; add" always.
2012-03-25babeld: fix bug due to v4mapped addresses.Matthieu Boutier
2012-03-25babeld: add command (config) to set debug flags.Matthieu Boutier
2012-03-25babeld: remove useless variable, make local another.Matthieu Boutier
2012-03-25memory: install babel memory informations.Matthieu Boutier
2012-03-25babeld: fix commands informations messages.Matthieu Boutier
2012-03-25babeld: place the babel-state file in the quagga vars directory.Matthieu Boutier
2012-03-25babeld: use zlog_debug instead of do_debugf, for debugf.Matthieu Boutier
2012-03-25babeld: add command: "show_babel_running_config".Matthieu Boutier
2012-03-25babeld: add command: "show_babel_database".Matthieu Boutier
2012-03-25babeld: add command: "show_babel_neighbour".Matthieu Boutier
2012-03-25babeld: avoid segfault (bug 706).Matthieu Boutier
2012-03-25babeld: change fprintf(stderr) in term of zlog_err.Matthieu Boutier
2012-03-25babeld: implement "show babel interface" commandDenis Ovsienko
* babel_interface.c * show_babel_interface_sub(): new function to process one ifp * show_babel_interface(): new function, VTY wrapper * babel_if_init(): update respectively
2012-03-25babeld: add handling of "-z" cmdline argDenis Ovsienko
2012-03-25babeld: bring babel_usage() into focusDenis Ovsienko
2012-03-25lib: update proto_redistnum() for BabelDenis Ovsienko
2012-03-25babeld: address remaining -Wcast-qual warningsDenis Ovsienko
* net.c * babel_send(): arguments are not treated as "const", justify declaration * babel_main.c: declare constant pointers as such
2012-03-25babeld: fix bug concerning pidfile.Matthieu Boutier
2012-03-25babeld: address some other compilation warnings.Matthieu Boutier
2012-03-25babeld: address some compilation warningsDenis Ovsienko
Including system headers is not necessary with zebra.h included and sometimes results in "__ASSERT_FUNCTION redefined" compilation warning. * babeld.c * babel_distribute_update_interface(): make static * babel_interface.c * interface_config_write(): unused 'babel_ifp' * don't include system headers * message.c * send_request(): unused 'babel_ifp' * send_multihop_request(): idem * don't include system headers * route.c: don't include system headers * xroute.c: idem * source.h: newline at EOF * message.h: idem
2012-03-25babeld: address FreeBSD "struct route" issueDenis Ovsienko
FreeBSD system headers have their own "struct route", which made it impossible to compile babeld. Switching babeld to "struct babel_route".
2012-03-25babeld: clean kernel_zebra (old functions, fields...).Matthieu Boutier
2012-03-25babeld: Initial import, for Babel routing protocol.Paul Jakma
* Initial import of the Babel routing protocol, ported to Quagga. * LICENCE: Update the original LICENCE file to include all known potentially applicable copyright claims. Ask that any future contributors to babeld/ grant MIT/X11 licence to their work. * *.{c,h}: Add GPL headers, in according with the SFLC guidance on dealing with potentially mixed GPL/other licensed work, at: https://www.softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html
2012-03-23lib: fix endianness bug in prefix.cRenato Westphal
While defining two "maskbytes" arrays for the respective endiannesses, the code was unconditionally using one that only worked on little endian systems. Use preprocessor macros to avoid the somewhat expensive htonl/ntohl macros. From: Renato Westphal <renatowestphal@gmail.com> Signed-off-by: David Lamparter <equinox@diac24.net>
2012-03-12ospfd: reduce ospf_verify_header()Denis Ovsienko
Protocol version checks fits ospf_packet_examin() better (like it is implemented in ospf6d), and packet type check is already there.
2012-03-12ospfd: bring ospf_check_auth() into focusDenis Ovsienko
The old ospf_check_auth() function did two different jobs depending on AuType. For Null and Simple cases it actually authenticated the packet, but for Cryptographic case it only checked declared packet size (not taking the actual number of bytes on wire into account). The calling function, ospf_verify_header(), had its own set of MD5/checksum checks dispatched depending on AuType. This commit makes the packet size check work against the real number of bytes and moves it to ospf_packet_examine(). All MD5/checksum verification is now performed in ospf_check_auth() function. * ospf_packet.c * ospf_packet_examin(): check length with MD5 bytes in mind * ospf_verify_header(): remove all AuType-specific code * ospf_check_auth(): completely rewrite
2012-03-12ospfd: introduce ospf_auth_type_str[]Denis Ovsienko
2012-03-12ospfd: fix packet length check for auth/LLS casesDenis Ovsienko
An OSPFv2 packet with trailing data blocks (authentication and/or link-local signaling) failed the recently implemented packet length check, because trailing data length isn't counted in the packet header "length" field. This commit fixes respective check conditions. * ospf_packet.c * ospf_packet_examin(): use "bytesdeclared" instead of "bytesonwire"
2012-03-12ospfd: introduce ospf_lsa_minlen[] (BZ#705)Denis Ovsienko
This commit ports more packet checks to OSPFv2, in particular, LSA size verification and Router-LSA link blocks verification. * ospf_lsa.h: add LSA size macros * ospf_packet.h: add struct ospf_ls_update * ospf_packet.c * ospf_lsa_minlen[]: a direct equivalent of ospf6_lsa_minlen[] * ospf_router_lsa_links_examin(): new function, verifies trailing part of a Router-LSA * ospf_lsa_examin(): new function like ospf6_lsa_examin() * ospf_lsaseq_examin(): new function like ospf6_lsaseq_examin() * ospf_packet_examin(): add type-specific deeper level checks
2012-03-12ospfd: review ospf_check_md5_digest()Denis Ovsienko
Rewrite some pointer arithmetics without the additional variables and move byte order conversion inside the function.
2012-03-12ospfd: review ospf_check_auth()Denis Ovsienko
1. The only purpose of "ibuf" argument was to get stream size, which was always equal to OSPF_MAX_PACKET_SIZE + 1, exactly as initialized in ospf_new(). 2. Fix the packet size check condition, which was incorrect for very large packets, at least in theory.
2012-03-12ospfd: introduce ospf_packet_minlen[] (BZ#705)Denis Ovsienko
This commit ports some of the OSPFv3 packet reception checks to OSPFv2. * ospf_packet.c * ospf_packet_minlen[]: a direct equivalent of ospf6_packet_minlen[] * ospf_packet_examin(): new function designed after the first part of ospf6_packet_examin() * ospf_read(): verify received packet with ospf_packet_examin() * ospf_packet.h: add convenience macros
2012-03-12ospfd: fix ospf_packet_add_top() to use LOOKUP()Denis Ovsienko
2012-03-12ospfd: use LOOKUP() for ospf_packet_type_strDenis Ovsienko
* ospf_packet.h: add proper str/max extern declarations * ospf_packet.c * ospf_packet_type_str: rewrite in "struct message", add max value * ospf_packet_add(): use LOOKUP() * ospf_write(): ditto * ospf_hello(): ditto * ospf_read(): ditto * ospf_dump.h: the declaration does not belong here * ospf_dump.c * ospf_header_dump(): use LOOKUP() * show_debugging_ospf(): ditto
2012-03-08doc: Fix an apparently no longer legal @itemize @asisPaul Jakma
* basic.texi: @asis isn't legal with @itemize apparently, should be @w according to docs, but @w{} seems to be needed. Fixes doc build error.
2012-03-08HACKING.tex: Change to a LaTeX version of HACKINGPaul Jakma
* configure.ac: Check for latexmk and pdflatex * Makefile.am: Add a conditional target to build HACKING.pdf, as a convenience * HACKING.tex: A slightly more structured HACKING, is readable on its own. * HACKING: removed
2012-03-07HACKING: Typo fixPaul Jakma
2012-03-07HACKING: Updates that have some initial consensus, for further iteration.Paul Jakma
2012-03-05Merge remote-tracking branch 'quagga-gnu.org/master'Paul Jakma
2012-03-04bgpd: Open option parse errors don't NOTIFY, resulting in abort & DoSPaul Jakma
* bgp_packet.c: (bgp_open_receive) Errors from bgp_open_option_parse are detected, and the code will stop processing the OPEN and return. However it does so without calling bgp_notify_send to send a NOTIFY - which means the peer FSM doesn't get stopped, and bgp_read will be called again later. Because it returns, it doesn't go through the code near the end of the function that removes the current message from the peer input streaam. Thus the next call to bgp_read will try to parse a half-parsed stream as if it were a new BGP message, leading to an assert later in the code when it tries to read stuff that isn't there. Add the required call to bgp_notify_send before returning. * bgp_open.c: (bgp_capability_as4) Be a bit stricter, check the length field corresponds to the only value it can be, which is the amount we're going to read off the stream. And make sure the capability flag gets set, so callers can know this capability was read, regardless. (peek_for_as4_capability) Let bgp_capability_as4 do the length check.
2012-03-04tools/multiple-bgpd: Fix the PREV calculation so it works for <4 bgpdPaul Jakma
* tools/multiple-bgpd: Make PREV more general and correct. Add comment to route-map about why rt/soo sets are there - cause it's still broken.
2012-03-02HACKING.pending: Add Quagga-RE detailsPaul Jakma
2012-02-28lib: fix incorrect thread list processing loopsPaul Jakma
* thread.c: (thread_timer_process,thread_process) thread_list_delete nulls thread->next. Loops need to save next first, or will only process the head. Problem noted by Lou Berger <lberger@labn.net>.
2012-02-28bgpd: Move up flag-check calls, parcel up attr-parser args, and other cleanupsPaul Jakma
* bgp_attr.h: (struct bgp_attr_parser_args) Attribute parsing context, containing common arguments. * bgp_attr.c: (general) Move the bgp_attr_flag_invalid flag-check calls up, out of each individual attr parser function, to be done once in attr_parse. Similarly move the calculation of the 'total' attribute length field up to attr_parse. Bundle together common arguments to attr-parsing functions and helpers into (struct bgp_attr_parser_args), so it can be passed by reference down the stack & also de-clutter the argument lists & make it easier to add/modify the context for attr-parsing - add local const aliases to avoid modifying body of code too much. This also should help avoid cut & paste errors, where calls to helpers with hard-coded attribute types are pasted to other functions but the code isn't changed. (bgp_attr_flags_diagnose) as above. (bgp_attr_flag_invalid) as above. (bgp_attr_{origin,aspath,as4_path,nexthop,med,local_pref,atomic}) as above. (bgp_attr_{aggregator,as4_aggregator,community,originator_id}) as above (bgp_attr_{cluster_list,ext_communities},bgp_mp_{un,}reach_parse) as above (bgp_attr_unknown) as above. (bgp_attr_malformed) as above. Also, startp and length have to be special-cased, because whether or not to send attribute data depends on the particular error - a separate length argument, distinct from args->length, indicates whether or not the attribute data should be sent in the NOTIFY. (bgp_attr_aspath_check) Call to bgp_attr_malformed is wrong here, there is no attribute parsing context - e.g. the 'flag' argument is unlikely to be right, remove it. Explicitly handle the error instead. (bgp_attr_munge_as4_attrs) Flag argument is pointless. As the comment notes, the check here is pointless as AS_PATH presence already checked elsewhere. (bgp_attr_parse) Do bgp_attr_flag_invalid call here. Use (struct bgp_attr_parser_args) for args to attr parser functions. Remove out-of-context 'flag' argument to as4 checking functions.
2012-02-28bgpd: consolidate attribute flag checksPaul Jakma
* bgpd/bgp_attr.c: (attr_flags_values []) array of required flags for attributes, EXTLEN & PARTIAL masked off as "dont care" as appropriate. (bgp_attr_flag_invalid) check if flags may be invalid, according to the above table & RFC rules. (bgp_attr_*) Use bgp_attr_flag_invalid. (bgp_attr_as4_aggregator) ditto, also take startp argument for the NOTIFY data. (bgp_attr_parse) pass startp to bgp_attr_as4_aggregator
2012-02-21ospf6d: remove defaults from iface config (BZ#550)Vyacheslav Trushkin
2012-02-21ospf6d: remove own routes on SIGTERM (BZ#448)Phil Laverdiere