commit 828f235df4b6a322aac58e1b7d5089c7f9d6cc0a Author: David Lamparter Date: Tue May 1 21:43:53 2012 +0200 release: 0.99.21 commit d78e2b8b562f8496aaf2977f7371415b71e82433 Author: David Lamparter Date: Tue May 1 18:08:43 2012 +0200 tests: disable broken tests/bgp_mp_attr_test.c it doesn't compile currently; it'll be fixed after the 0.99.21 release. * tests/bgp_mp_attr_test.c: wrap in #if 0 for now Signed-off-by: David Lamparter commit 4b5a2103b7d03b9209cfa3668d9cebead697bc82 Author: David Ward Date: Sun Apr 29 16:47:08 2012 -0400 redhat: add systemd service files * redhat/*.service: add systemd service file for each routing daemon * redhat/quagga.sysconfig: add comment about watchquagga and systemd * redhat/Makefile.am: add systemd service files to distribution Signed-off-by: David Ward Signed-off-by: David Lamparter commit a41242bed823db77186ed7d11953cffaa0c3b733 Author: David Ward Date: Sun Apr 29 16:47:07 2012 -0400 redhat: update initscripts Taken from Fedora packaging with additional fixes. * redhat/*.init: make all initscripts LSB-compliant; store the daemon configuration file location in $CONF_FILE, and perform existence testing before starting the daemon * redhat/babeld.init: add initscript for Babel routing engine * redhat/quagga.sysconfig: add command-line options for babeld; remove the daemon configuration file locations from $*_OPTS; clarify directions for configuring watchquagga * redhat/Makefile.am: add babeld.init to distribution Signed-off-by: David Ward Signed-off-by: David Lamparter commit 0bd268a5232f91c8cf01366b7ae43bcfed1dc8fe Author: David Ward Date: Sun Apr 29 16:47:06 2012 -0400 redhat: add logrotate configuration for babeld and isisd Signed-off-by: David Ward Signed-off-by: David Lamparter commit 7b0df9c5bad83e2a2eb047e84edc00b3bc1d562c Author: David Ward Date: Mon Apr 30 11:36:16 2012 -0400 doc: add ospfclient(8) and watchquagga(8) man pages Taken from Fedora packaging. Signed-off-by: David Ward Signed-off-by: David Lamparter commit f027d331fc24c0b4aed77ab7507a9635db313f3c Author: David Ward Date: Mon Apr 30 11:36:15 2012 -0400 doc: only package man pages for daemons that are built Signed-off-by: David Ward Signed-off-by: David Lamparter commit 2e14a748061921f1f656b07890c4932f97c2baaa Author: David Ward Date: Sun Apr 29 16:47:03 2012 -0400 tools: use standard interpreter path in all Perl scripts Signed-off-by: David Ward [changed /usr/bin/perl to /usr/bin/env perl] Signed-off-by: David Lamparter commit fac3c2453a06bce773a3f4ae6834f5f9a317b88c Author: David Lamparter Date: Sat Apr 28 22:37:20 2012 +0200 bgpd: fix up multipath merge breakage the BGP multipath code was developed against a pre-f6f434b Quagga where bgp_attr_unintern and ecommunity_free took single-star pointers. They now take double-star pointers. * bgpd/bgp_mpath.c: fix up bgp_attr_unintern & ecommunity_free calls. Signed-off-by: David Lamparter commit 27f689793a25a66cf62561ac1d1302e01983a805 Author: Juliusz Chroboczek Date: Mon Mar 12 13:52:42 2012 +0100 babeld: merge kernel_zebra.c into kernel.c. In upstream babel, we include different kernel_foo files depending on the platform we compile for. In Quagga, this is not needed, and it avoids tricky autotools issues. (All autotools issues are tricky.) [David: without this commit, build breaks.] From: Juliusz Chroboczek Signed-off-by: David Lamparter commit 61a81bea6d21dedc62931d6925d0608ebc45c196 Author: Denis Ovsienko Date: Mon Mar 12 13:51:49 2012 +0100 babeld: Include babel_main.h in noinst_HEADERS. babeld wouldn't build in a dist tarball without this. From: Denis Ovsienko Signed-off-by: Juliusz Chroboczek [fixed up git message] Signed-off-by: David Lamparter commit 8d79efddb9c63f3b45e0ee7cac9508509b3b939c Author: David Lamparter Date: Fri Apr 20 17:26:48 2012 +0200 lib: bump ZSERV_VERSION to 2 continually changing the zserv protocol without bumping up the version number has made it impossible to talk to zebra without knowing the exact version. in reality, increasing the version number more often guards against inadvertedly running incompatible versions of a daemon and zebra as well as aids external development. * lib/zclient.h: #define ZSERV_VERSION 2 Signed-off-by: David Lamparter commit 9665856e3718e42068e7d897f5e2468e77fb8c17 Author: David Lamparter Date: Fri Apr 20 17:23:39 2012 +0200 Revert "zebra: clean up client routes when client goes away" This reverts commit af56d404cd56d94ad3b2ec3f159650eb72baef0a, which was accidentally duplicating functionality from commit 2ea1ab1 "zebra: ZEBRA_HELLO and mopping up routes (BZ#448)" Conflicts: zebra/zebra_rib.c Signed-off-by: David Lamparter commit fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04 Author: Jorge Boncompte [DTI2] Date: Fri Apr 13 13:46:09 2012 +0200 bgpd: Fix crash when disabling dampening (BZ#687) Vladimir Podobaev reported that the following commands crashed the daemon. router bgp 123 bgp dampening no bgp dampening 1 2 3 4 no bgp dampening The problem was that bgp_damp_info_clean() tried to dereference the already freed reuse_list array in the second call to "no bgp dampening". Fixed by checking in bgp_damp_disable() that the dampening it's enabled before doing the cleanup. Signed-off-by: Jorge Boncompte [DTI2] commit 7939e016b3d4ecd2f5b8ad708b69607e05a084a6 Author: Jorge Boncompte [DTI2] Date: Mon Apr 9 18:03:57 2012 +0200 ospfd: Fixes a crash of the daemon with a snmp walk - And allows to walk the LSDB. Signed-off-by: Jorge Boncompte [DTI2] commit 3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733 Author: JR Rivers Date: Sun Apr 1 12:16:31 2012 -0700 zebra: use larger buffer (4096) for netlink messages Increase the maximum number of nexthops per route by using a larger buffer for netlink messages. * zebra/rt_netlink.c: Use a buffer of 4096 bytes to parse/build netlink messages. Add a hash define for this number (NL_PKT_BUF_SIZE). Most places in the code were previously using a buffer of 1024 bytes. commit d75318cc8de91d94649106f4ea3122d0d21ac9eb Merge: 6e493a4 48d8bea Author: David Lamparter Date: Mon Apr 16 18:24:40 2012 +0200 isisd: merge osr/google-is-is this is essentially half of a rewrite of isisd. please note that a lot of things are still broken and isisd is not ready for production use. commit 48d8bea8b7c83cf186460f711ab166455b5ed676 Author: Vyacheslav Trushkin Date: Fri Nov 25 18:51:48 2011 +0400 quagga: option "-z" ("--socket ") added All daemons modified to support custom path to zserv socket. [reapplied from b511468 after isisd merge] commit 1627b20fd4fe431558d0f77aff98cbee29ca15d8 Author: Vyacheslav Trushkin Date: Fri Nov 25 17:56:21 2011 +0400 isisd: indent longopts array commit 086695cb8eea5b405b21e66b92ef0348355c4821 Author: David Lamparter Date: Mon Apr 16 18:14:50 2012 +0200 isisd: reapply removal of CVS cruft this re-removes CVS keywords and .cvsignore files. original commits: b82cdeb delete CVS keywords 05e54ee build: delete .cvsignore files commit 6e493a44836d3b034ed3421e866878de3fbfcc5b Merge: 9bb5870 3b381c3 Author: David Lamparter Date: Mon Apr 16 16:46:13 2012 +0200 bgpd: merge osr/quagga-osr-patches (BZ#700) this merges a bgp capability negotiation fix where bgpd would fail if no multiprotocol capability was present, but other capabilities were. commit 9bb5870e26a4089f599b24adf822c4d1a9870a44 Merge: a25a44d 3cf6c2b Author: David Lamparter Date: Mon Apr 16 13:54:37 2012 +0200 bgpd: merge osr/google-bgp-multipath this patchset allows collapsing multiple received routes in BGP into one multipath route that will, if readvertised, contain an aggregate of all received attributes. commit aa3b264282677fcd33513352aa878d00163d2dbf Author: Avneesh Sachdev Date: Wed Apr 11 23:56:03 2012 -0700 isisd: reapply patch to fix zebra protocol Reapply the bits of revision b4e45f6 that pertain to isisd. That is: git log -n 1 -p b4e45f6 -- isisd These were dropped in the merge with the Google ISIS code (14d2bbaa). The commit message for b4e45f6 is: fix zebra protocol after MP-BGP changes The previous commits modified both zebra and bgpd for additional SAFI field, but not any other routing daemon, which led to zebra daemon crashing with failed assertion. commit 14d2bbaa3f4aa53152472694c29f336808e47313 Merge: 51d4ef8 e96b312 Author: Avneesh Sachdev Date: Wed Apr 11 23:51:08 2012 -0700 Merge quagga mainline into the google ISIS code. The steps were: $ git checkout google-is-is $ git merge quagga $ git checkout google-is-is -- isisd # Resolve conflicts in the following: lib/md5.h zebra/rt_netlink.c zebra/zebra_rib.c zebra/zserv.c Note that the content in the isisd directory is left unchanged in the merge. As a result, changes made to isisd as part of the following commits on the quagga mainline are dropped. # 8ced4e82 is the merge base, e96b3121 is the current quagga master $ git log --oneline --reverse 8ced4e82..e96b3121 -- isisd 5574999 isisd: fix crash on "no router isis" (BZ#536) 8998075 isisd: raise hello rate for DIS (BZ#539) 306ca83 isisd: include hash.h, not hash.c b82cdeb delete CVS keywords 2f65867 isisd: indent longopts array b511468 quagga: option "-z" ("--socket ") added 05e54ee build: delete .cvsignore files b4e45f6 fix zebra protocol after MP-BGP changes 7fd6cd8 isisd: fix circuit state machine 907fd95 isisd: send proper LSP after DIS election d034aa0 isisd: fix wrong next-hops from SPF c25eaff isisd: unexpected kernel routing table (BZ#544) e6b03b7 isisd: implement MD5 circuit authentication commit a25a44dba84e9a6ac2b87e24472b6e9f959d845b Author: Denis Ovsienko Date: Tue Apr 3 20:33:24 2012 +0400 ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case commit 3cf6c2b4e43f44a977d218c96c26250654ae333e Merge: 01d7ff0 e96b312 Author: Avneesh Sachdev Date: Mon Apr 9 00:25:15 2012 -0700 Merge branch 'quagga' into google-bgp-multipath Conflicts: bgpd/bgp_route.c commit 3b381c32fc2c325cc4ffb9f9f30a7e96e9bd87c6 Author: Avneesh Sachdev Date: Sun Feb 19 10:19:52 2012 -0800 bgpd: fix issue in capability negotiation (BZ#700) Address problem where bgpd would reject a session if a peer sent some capabilities in its Open message, but did not include a Multiprotocol extensions capability. Note that the session would come up if there were no capabilities at all in the Open message. * Add the 'mp_capability' out parameter to bgp_capability_parse(). Set it to '1' if a Multiprotocol extensions capability is encountered. * Switch on 'mp_capability' instead of 'capability' in the calling functions to determine if the peer indicated the set of AFI/SAFIs it supports. The net result is that when a peer does not send an MP capability, it is assumed to support the AFI/SAFIs configured for it locally. commit 51d4ef832c1e58150325630e25c442866e5a6cf5 Author: Josh Bailey Date: Wed Mar 21 17:13:39 2012 -0700 zebra: include hardware addr in if up/down messages Change interface up/down notification messages to also include the hardware address of the interface. The format of these messages is now identical to the interface add message -- move the serialization code to common functions. * lib/zclient.c: Modify zebra_interface_if_set_value() to also parse the hardware address. Invoke it from zebra_interface_add_read() and and zebra_interface_state_read(). * zebra/zserv.c: Add zserv_encode_interface(). Invoke it from zserv_interface_add(), zserv_interface_delete() and zserv_interface_update(). commit 2dd04c5dc8b5a09cce1c251361fa58f26398fd9f Author: Josh Bailey Date: Wed Mar 21 10:37:03 2012 -0700 lib: Tweak to if_delete_retain() * lib/if.c: Change if_delete_retain() to delete all connected addresses, but to not free the list that holds them. Free the list just before the interface structure itself is freed, in if_delete(). commit af56d404cd56d94ad3b2ec3f159650eb72baef0a Author: Josh Bailey Date: Wed Mar 21 18:47:51 2012 -0700 zebra: clean up client routes when client goes away * zebra/zebra_rib.c: Add code to clean up routes added by a client (as identfied by 'rib type'). * zebra/zserv.[ch]: Maintain the type of the routes added by a client on the 'zserv' structure -- assume that a given client uses a single route type for now. Clean up routes from a client when the client goes away (in zebra_client_close()). From: Josh Bailey Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit fc328ac9d3d49b871c1139f36deb702a254c0d4f Author: Subbaiah Venkata Date: Tue Mar 27 16:35:22 2012 -0700 zebra: add more logs/asserts to rib work queue code * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more logs and asserts. From: Subbaiah Venkata Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit e38e0df01ad305ad48ecf816b52fa99fd3f2a4e1 Author: Subbaiah Venkata Date: Tue Mar 27 23:48:05 2012 -0700 isisd: couple of bug fixes commit 3f045a08812525505e165deea99a79447b44506b Author: Josh Bailey Date: Sat Mar 24 08:35:20 2012 -0700 isisd: add Google's changes to IS-IS commit 6902c69aa30a73ecd70ef8941518b541ca02b878 Author: Subbaiah Venkata Date: Tue Mar 27 19:21:29 2012 -0700 zebra: tweak deletion of routes without nexthop addr * zebra/zserv.c - zread_ipv4_delete(): Pass a null 'gate' parameter to rib_delete_ipv4() if the route being deleted does not specify a next hop IP address. We were previously passing a pointer to a cleared out IP address. - zread_ipv4_add(): Fix indentation. From: Subbaiah Venkata Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit 26e2ae362baf207d82e4c1ac76bc1c2b2df6ccaa Author: Josh Bailey Date: Thu Mar 22 01:09:21 2012 -0700 zebra: read multipath routes and hw addr from netlink * zebra/rt_netlink.c: - Pick up the hardware address of an interface when we receive a netlink link change message. Extract code for parsing the link-layer hardware address into a new function so we can reuse it. - netlink_routing_table(): Update to handle multipath routes. - netlink_route_change(): Update to handle multipath routes. Fix problem where the metric was not being read out. * zebra/zebra_rib.[ch]: Extern nexthop_ipv4_ifindex_add() -- it is now called from the netlink code. From: Josh Bailey Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit d531050b7bf0f93d4d29a7a2f7b745641778b483 Author: Subbaiah Venkata Date: Sat Mar 24 13:10:19 2012 -0700 lib: add stream_set_endp() * lib/stream.[ch]: - Add stream_set_endp(). This can be used to trim data (for example, padding) at the end of a stream. - Fix swapped 'getp' and 'endp' parameters in STREAM_WARN_OFFSETS. From: Subbaiah Venkata Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit bed930fd70742af5ae138e0a5ee629dda296ea36 Author: Josh Bailey Date: Wed Mar 21 10:22:19 2012 -0700 lib: add support for keyed-hashing with MD5 * lib/md5.[ch] Add implementation of HMAC-MD5 from RFC 2104. From: Josh Bailey Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit 54dd61227352dd1dd4db4fe76dbf7d2e92522e74 Author: Josh Bailey Date: Wed Mar 21 10:00:07 2012 -0700 lib: Tweaks to linked list macros * lib/linklist.h - Change the listnextnode, listhead and listtail macros so that they allow the list pointer to be NULL. - Modify the ALL_LIST_ELEMENTS* macros such that they clear the data pointer at the beginning and end of the loop. From: Josh Bailey Signed-off-by: Avneesh Sachdev Signed-off-by: David Lamparter commit e96b312150d8e376c1ef463793d1929eca3618d5 Author: David Lamparter Date: Wed Apr 4 00:14:36 2012 +0200 lib: pretty ip_masklen and masklen2ip nonwithstanding any desire for optimisation, these versions are shorter and more concise. reading the comments, they might even be easier to understand. I've tested them on i686 and x86_64, and checked that correct assembler code is emitted for ARM, MIPS and PowerPC. IPv6 is left as an exercise for another day, none of the ideas I had led to a "yes, this is the one to go with" solution. Signed-off-by: David Lamparter commit a3537862f3c00b60fc52a67c1cc447c2a65f97bd Author: David Lamparter Date: Fri Mar 23 22:48:05 2012 +0100 Revert "lib: optimize ip_masklen()" (BZ#720) This reverts commit d171bf58ef12ace43d48565e6870722dece1e6ed. There are multiple reasons for this revert, including bug #720, but also quite simply the unreadability of having 2000 lines of an autogenerated table in the middle of a source file. Signed-off-by: David Lamparter Reported-by: Martin Winter commit fa5831e85ae9ba7008fb4b4e2d4c7561ae5cb697 Author: Paul Jakma Date: Tue Mar 27 11:54:04 2012 +0100 bgpd: bgp_attr_flags_diagnose shouldn't assert * bgpd/bgp_attr.c: (bgp_attr_flags_diagnose) debug code for error-handling paths probably shouldn't assert, instead it should just log that there was no problem. commit fa61e16ddebe10a71d98bcd2eba0f630071ea4a7 Author: Paul Jakma Date: Sun Mar 25 21:31:47 2012 +0100 bgpd: attr_parse call to attr_malformed should deal with PROCEED error case * bgpd/bgp_attr.c: (bgp_attr_parse) the invalid flag check call to bgp_attr_malformed is pretty useless if it doesn't actually allow for the PROCEED non-error case. commit 683f2b86d89fa356d3d1f7a54b0c269baa38b836 Author: Paul Jakma Date: Fri Mar 23 14:58:45 2012 +0000 bgpd: Fix silly mistake in bgp_attr_flag_invalid * bgp_attr.c: (bgp_attr_flag_invalid) flags is meant to be masked off with the mask variable... commit bd471fea4ec965c71d6c2201745995092fbc36f6 Author: Paul Jakma Date: Thu Mar 15 11:30:00 2012 +0000 bgpd: malformed attribute error that can still proceed should fixup getp * bgp_attr.c: (bgp_attr_malformed) When a malformed attribute error can be ignored, and BGP message processing may still proceed, the stream getp should be adjusted to the end of the attribute - the caller may not have consumed all the attribute. Problem noted by Martin Winter in bug 678. Also, rename the 'startp' local to 'notify_datap', for clarity. commit 81c3e5006e5d29e305cbc0ab482617d7e570e8c0 Merge: fe67e66 6881f26 Author: Paul Jakma Date: Sun Mar 25 17:10:22 2012 +0100 Merge branch 'babeld-merge' into master-copy commit 6881f2698279f3c47a55e8969860eeac59e8c3d7 Author: Juliusz Chroboczek Date: Tue Feb 14 15:43:34 2012 +0100 babeld: remove "parasitic" mode. This is the functionality described in Appendix C of RFC 6126. Its main purpose is to avoid keeping a full source table, which makes it possible to implement a subset of Babel in just a few hundred lines of code. However, in Quagga the code for maintaining the source table is already there, and a parasitic implementation can be simulated using filtering -- so it makes little sense to keep the functionality. commit cbde15513ba47f6e7f6d02fcafcfb12cd5b1df77 Author: Denis Ovsienko Date: Tue Feb 14 15:12:03 2012 +0400 babeld: 3 more timing statements in config text This commit makes the following lines visible in running-config text, when respective intervals are configured to non-default values: * babel hello-interval * babel update-interval * babel resend-delay commit 5ca7986d546a1b65a4917aec0f1b594f950f7c27 Author: Juliusz Chroboczek Date: Tue Feb 14 11:22:29 2012 +0100 babeld: consolidate zebra interface into fewer functions. commit b63b4484c6d2c9d304d4ddd0756a4847c6dc5359 Author: Juliusz Chroboczek Date: Tue Feb 14 11:17:32 2012 +0100 babeld: fix typo in kernel_route_add_v6. commit 260948cdd6030b332137dfa0580d5a9ba651b145 Author: Juliusz Chroboczek Date: Tue Feb 14 09:09:32 2012 +0100 babeld: set interface flags eagerly, not at interface up. commit 46b92c043f1a83d8343a4a0345a7b69bac3cdf20 Author: Juliusz Chroboczek Date: Tue Feb 14 08:53:51 2012 +0100 babeld: more helpful sample conf file. commit 4d176dc07ccdcdefcd0e40043233a8c4f136f5c1 Author: Juliusz Chroboczek Date: Tue Feb 14 08:52:19 2012 +0100 babeld: fix documentation. commit 36329c02c36703cc2158c1c99b86045fed26d4ae Author: Juliusz Chroboczek Date: Tue Feb 14 08:49:57 2012 +0100 babeld: remove remains of standalone babeld's configuration code. Standalone babeld has a configuration interface that is not used in Quagga. This removes a few bits of this code that survived the port to Quagga. commit cb4b13d945a4b44282e59fa2be9ceda752420a13 Author: Denis Ovsienko Date: Mon Feb 13 22:13:37 2012 +0400 babeld: drive interface_config_write() forward commit a14ef5eeccc8c76c41830475bbe3c31c9e14faa5 Author: Denis Ovsienko Date: Sat Feb 11 21:06:16 2012 +0400 babeld: justify "running-config" meaning in CLI The primary focus of this commit is to make "show running-config" command display more current configuration, including some of the bits previously seen in the output of "show babel running-config". Besides that, the following commands were renamed for consistency with the syntax of other components: "debug *" to "debug babel *" (and moved to top level) "show babel running-config" to "show babel parameters" * babel_interface.c * show_babel_running_config(): rename to show_babel_parameters(), update syntax pattern, don't call show_babeld_configuration() * babel_if_init(): update respectively * babel_enable_if_config_write(): new VTY helper for static babel_enable_if * babel_interface.h: add extern declaration * babel_main.c: unset all debug options by default * show_babel_main_configuration(): remove debug options decoder * babel_zebra.c * babel_debug(): rename to debug_babel(), update syntax pattern * no_babel_debug(): rename to no_debug_babel(), update syntax pattern * babelz_zebra_init(): update respectively * debug_babel_config_write() new VTY helper for static debug_type * babel_zebra.h: add extern declaration * babeld.c * babel_config_write(): add the code to output "debug babel *", "router babel", "redistribute *" and "network *" statements * show_babeld_configuration(): dismiss * babeld.h: remove extern declaration * babeld.texi: update for renamed commands * babeld.conf.sample: idem, add debug statements block commit ce590ecd85b3cf32c5429f09e12d92248cc01ef2 Author: Juliusz Chroboczek Date: Sat Feb 11 17:48:05 2012 +0100 Remove dead variable reboot_time. Thanks to Denis Ovsienko. commit 8a46e12f5f0b02d58b1d7bc6c0d140aeec6c80c2 Author: Matthieu Boutier Date: Sat Feb 11 15:09:33 2012 +0100 doc: fix typo. commit 68c65a5d3a6a8cb8133b5e9311fc5dc21de88e9c Author: Juliusz Chroboczek Date: Sat Feb 11 14:28:17 2012 +0100 doc: update babeld documentation. commit 173982334c978fdf2e7030d32a2cdc99587fb434 Author: Juliusz Chroboczek Date: Sat Feb 11 14:27:16 2012 +0100 doc: fix Makefile dependencies for babeld. commit 9c298c7119c1dba6c589b8f4c358debd8e694b72 Author: Juliusz Chroboczek Date: Sat Feb 11 14:06:24 2012 +0100 babeld: display update-interval and resend-delay in show commands" commit c428edba5fb151844d28fbb41fce1df466a74e42 Author: Juliusz Chroboczek Date: Sat Feb 11 14:02:10 2012 +0100 babeld: vty commands (hello-interval, update-interval, resend-delay). commit b58871ee4d54989c16a60a839a592c9c4ab19cc3 Author: Juliusz Chroboczek Date: Sat Feb 11 13:34:30 2012 +0100 babeld: remove port and group setting commands. They didn't work anyway, since they're called too late. commit 52d54422bdc0b70356d84a38a0ce15ba5dea03e0 Author: Juliusz Chroboczek Date: Sat Feb 11 13:08:00 2012 +0100 Resynchronise with babeld-1.3.1. commit 359be3d0e4db5c931b1ad0dabbac2dea77394de1 Author: Denis Ovsienko Date: Sat Feb 11 15:25:01 2012 +0400 babeld: dismiss babel_redistribute_unset() The function was effectively duplicating existing zclient_redistribute(). This makes no_babel_redistribute_type() consistent with babel_redistribute_type() commit 3c442e8802c260a0ce9787b5f432a7a2a093be25 Author: Matthieu Boutier Date: Wed Feb 8 23:30:46 2012 +0100 babeld: fix wire{d,less} commands name. commit 9c58fbd7d7658055c2b3074489c6d338448d88e9 Author: Matthieu Boutier Date: Thu Feb 9 21:51:17 2012 +0100 ripd: add babel for redistribution. commit 93079db65cbb678d7fb67f7dd871e24c12b86f09 Author: Matthieu Boutier Date: Thu Feb 9 20:58:07 2012 +0100 ripngd: Replace redistribution strings with route_types.h defines. commit d70ab9dcd8f054ebd5f60a29dbbd9b39f9fe7566 Author: Juliusz Chroboczek Date: Thu Feb 9 17:23:09 2012 +0100 babeld: Add support for blackhole routes. Babel makes use of blackhole routes to prevent routing loops between overlapping prefixes shortly after a route is retracted (see RFC 6126 sections 2.8 and 3.5.5). This patch adds support for installing such blackhole routes. commit 31e2a19fd2b4aca34b1d2f5e2eb8c9a44b9ea6c9 Author: Juliusz Chroboczek Date: Thu Feb 9 14:06:11 2012 +0100 babeld: refactor filtering stubs. Factorise the common parts of the in/out filtering functions. This also fixes a bug with filtered out routes, which in babeld are signalled by a filter returing INFINITY, not -1. commit 578ce371d12422ce444f31ae4e51b21675c74b55 Author: Juliusz Chroboczek Date: Thu Feb 9 13:42:28 2012 +0100 zebra: Display uptime of Babel routes in show ip[v6] route. commit 82509bfde09b15ac8856a374aac6d5d62b91f54a Author: Juliusz Chroboczek Date: Thu Feb 9 13:35:27 2012 +0100 babeld: Use quagga_gettime. commit b6475ecb14abab936919894050f9ca47415d0f48 Author: Juliusz Chroboczek Date: Thu Feb 9 12:29:10 2012 +0100 babeld: Don't use an ifindex when installing IPv4 routes. Stand-alone babeld installs routes using both a next-hop gateway and an interface index. Unfortunately, this doesn't work for IPv4 under Quagga. We now ignore the ifindex when installing IPv4 routes, which makes Babel work for IPv4 in prefix-based networks. Of course this breaks IPv4 mesh networks, unless you play some tricks with your interfaces' netmasks. commit 53b21956f650df86a76b7a7047cfa85114c99dcc Author: Matthieu Boutier Date: Tue Jan 31 17:09:55 2012 +0100 babeld: remove some unused functions' arguments. commit 73c74d4ee8bd0bc3fae899679e852df9c61f0ed3 Author: Matthieu Boutier Date: Wed Feb 8 00:32:59 2012 +0100 doc: fix typo in babeld. commit f92a55ff0ef8e1186ad52369ace299bc91fdb791 Author: Juliusz Chroboczek Date: Tue Feb 7 16:33:17 2012 +0100 doc: Document babeld. commit ec0c848047954158b4316d45586079cbb774a7fe Author: Juliusz Chroboczek Date: Tue Feb 7 05:44:41 2012 +0100 babeld: Indentation fix. commit 38846de1fd7fa9005933564de28360fb9bdf02bb Author: Juliusz Chroboczek Date: Tue Feb 7 05:43:36 2012 +0100 babeld: Error handling and tweaks for babeld commands. commit e19ed8c4516621be74b9a28c887185fc66b67430 Author: Juliusz Chroboczek Date: Tue Feb 7 05:36:06 2012 +0100 babeld: Fix typo in hello interval command. commit feb6c53eacf630bf18d29e1994f65e567dbdd985 Author: Juliusz Chroboczek Date: Tue Feb 7 04:58:49 2012 +0100 vtysh: Vtysh support for babeld. commit 831aeb9a87d9071829758caf11130aee5578f9c2 Author: Juliusz Chroboczek Date: Tue Feb 7 04:56:47 2012 +0100 babeld: Replace the babeld.conf.sample file by one that actually works. commit 8c4e57a57562c9329b1de4c29ee921ab98182c6b Author: Matthieu Boutier Date: Sat Jan 28 00:29:51 2012 +0100 babeld: fix interface bug, simplify code. Perhaps could it be able to free already free memory (so free(NULL)), in function interface_reset(). On other hand, it initiated untracked interfaces, raising (at least) inappropriate messages. Finally, I remove the BABEL_IF_IS_ENABLE flag, witch was not really usefull. Note the test if_up isn't weaker, because (...IS_UP => ...IS_ENABLE). commit 69394543597a0fd8c161c5c8a0d25c8b1cfa8a93 Author: Matthieu Boutier Date: Sat Jan 28 10:35:12 2012 +0100 babeld: state-file was loaded too early. Initial seqno too. commit 210f6f66287c40f247c1a4ff983aae85b9e42e2c Author: Matthieu Boutier Date: Sat Jan 28 00:07:14 2012 +0100 babeld: fix eui64 features. We are interested by eui64 with at least 6 octets. commit a0edef1b74bc9785b2aa1ed292a2777b6a75d40e Author: Matthieu Boutier Date: Fri Jan 27 22:54:11 2012 +0100 babeld: "return CMD_SUCCESS" was missing for command 'no debug'. commit 05c943ac43087750ebc81b916b7dccfe4ae074ff Author: Matthieu Boutier Date: Thu Jan 26 22:15:34 2012 +0100 babeld: Replace redistribution strings with route_types.h defines. commit c35fafdf887aa32c5be6ad738d3a3b0140cea6e8 Author: Matthieu Boutier Date: Mon Jan 23 23:46:32 2012 +0100 babeld: babelz merge. Babelz is the last version of the stand-alone babel daemon. In particular, it use multiple channels to diminuate interferences. Please refer to this one for more details. commit 16e51b246be6b18641327685f44bd4f5f6649367 Author: Matthieu Boutier Date: Mon Jan 23 00:22:14 2012 +0100 babeld: remove unused variable. commit 0b42c70840e16b048f62a38652123eb2cb900b65 Author: Ang Way Chuang Date: Fri Jan 27 20:52:27 2012 +0400 vtysh: fix regexp for install_element() in babeld commit a19a3bf94740aebff6fdfc76f3d4b17c0013fae4 Author: Denis Ovsienko Date: Sat Jan 21 23:16:00 2012 +0400 babeld: add MP-specific zclient API fix 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. commit ec8d8d5ba648302cf9405f1346e3760d9b9d061c Author: Matthieu Boutier Date: Fri Jan 20 15:32:16 2012 +0100 babeld: change the modify route system. 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. commit 6dfeb3f6cfaf89ce0e11421b48feb2965a43ffd6 Author: Matthieu Boutier Date: Fri Jan 20 17:53:57 2012 +0100 babeld: fix bug due to v4mapped addresses. commit f1305cbfbed050ed4f389fa282bef49917ffd638 Author: Matthieu Boutier Date: Fri Jan 20 00:19:35 2012 +0100 babeld: add command (config) to set debug flags. commit b5d43c939476b49106b1ab80b61609aba43c915d Author: Matthieu Boutier Date: Thu Jan 19 22:38:56 2012 +0100 babeld: remove useless variable, make local another. commit 2236df03898f82e627f865e11157a5e08dd2e4ba Author: Matthieu Boutier Date: Thu Jan 19 22:37:38 2012 +0100 memory: install babel memory informations. commit 3f031ed536cf96d44015cf49d1f734d15d194f0a Author: Matthieu Boutier Date: Wed Jan 18 23:03:00 2012 +0100 babeld: fix commands informations messages. commit 72db20bf8f6af1fd70ae42f287360cad835f042b Author: Matthieu Boutier Date: Wed Jan 18 22:06:10 2012 +0100 babeld: place the babel-state file in the quagga vars directory. commit 3cb4134bcfb2b9f7aa885a39cc0efc3b18125490 Author: Matthieu Boutier Date: Wed Jan 18 20:20:59 2012 +0100 babeld: use zlog_debug instead of do_debugf, for debugf. commit d3351d1ebf99591cf436035bb148e4ae0b351ffc Author: Matthieu Boutier Date: Thu Jan 19 22:36:56 2012 +0100 babeld: add command: "show_babel_running_config". commit 1f39f466e439f217dcbae741ddc23a5340a05ec9 Author: Matthieu Boutier Date: Wed Jan 18 20:01:31 2012 +0100 babeld: add command: "show_babel_database". commit 297a55ba1ce58b281b825400abeca6c32b99db52 Author: Matthieu Boutier Date: Wed Jan 18 16:39:29 2012 +0100 babeld: add command: "show_babel_neighbour". commit 0ee8a1f1d61ce55642d9164625ab36700fe2c3a9 Author: Matthieu Boutier Date: Wed Jan 18 00:52:06 2012 +0100 babeld: avoid segfault (bug 706). commit 4eedea551290906fc76f3a0c908ae759e78bb68a Author: Matthieu Boutier Date: Tue Jan 17 22:46:21 2012 +0100 babeld: change fprintf(stderr) in term of zlog_err. commit d4e46e681434e768b870679b998eb1ac7635fdfc Author: Denis Ovsienko Date: Tue Jan 17 19:25:03 2012 +0400 babeld: implement "show babel interface" command * 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 commit 8f3607f84eb5d21d4732a51b39775b7edf8796c2 Author: Denis Ovsienko Date: Tue Jan 17 17:04:00 2012 +0400 babeld: add handling of "-z" cmdline arg commit 446d73b7ae544df3af68b4e85ddcd06c2d3589bf Author: Denis Ovsienko Date: Tue Jan 17 17:00:20 2012 +0400 babeld: bring babel_usage() into focus commit f8a246d6df0556fb897e1785d1c2ea81caf8956d Author: Denis Ovsienko Date: Wed Jan 11 18:18:56 2012 +0400 lib: update proto_redistnum() for Babel commit 87c271c69330cfcea7955503eba3ed15a15cb634 Author: Denis Ovsienko Date: Tue Jan 10 15:58:04 2012 +0400 babeld: address remaining -Wcast-qual warnings * net.c * babel_send(): arguments are not treated as "const", justify declaration * babel_main.c: declare constant pointers as such commit 528eab1fd04434e0befe9a98191b11602e3cb2ff Author: Matthieu Boutier Date: Sun Jan 8 17:07:10 2012 +0100 babeld: fix bug concerning pidfile. commit c7c53fa88ccdbc2d48cf7327c9e4f33cdc517a8a Author: Matthieu Boutier Date: Sun Jan 8 16:43:08 2012 +0100 babeld: address some other compilation warnings. commit 3dbda0ceebe369a1071600fe7d8d8ecf45f1027c Author: Denis Ovsienko Date: Sun Jan 8 16:52:36 2012 +0400 babeld: address some compilation warnings 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 commit ef4de4d36c2dc10a68d41e518057d04b262ec867 Author: Denis Ovsienko Date: Sun Jan 8 15:29:19 2012 +0400 babeld: address FreeBSD "struct route" issue FreeBSD system headers have their own "struct route", which made it impossible to compile babeld. Switching babeld to "struct babel_route". commit 089082b5d51c41a4498edb6a3f495ade0d517e73 Author: Matthieu Boutier Date: Fri Jan 6 23:09:23 2012 +0100 babeld: clean kernel_zebra (old functions, fields...). commit 5734509c0545ebd95a5b8e3f22a911c1a39ffa1b Author: Paul Jakma Date: Sun Dec 25 17:52:09 2011 +0100 babeld: Initial import, for Babel routing protocol. * 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 commit fe67e668881b8b8d71b1570575c913cd287fafcf Author: Renato Westphal Date: Fri Mar 23 16:27:40 2012 -0300 lib: fix endianness bug in prefix.c 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 Signed-off-by: David Lamparter commit aee567450eaf32877d00f47c4cc5d05c5fb85a51 Author: Denis Ovsienko Date: Tue Feb 28 15:15:29 2012 +0400 ospfd: reduce ospf_verify_header() Protocol version checks fits ospf_packet_examin() better (like it is implemented in ospf6d), and packet type check is already there. commit bd5651f0ec7aa94627a2a6868dd458f016750a35 Author: Denis Ovsienko Date: Sun Feb 26 17:59:43 2012 +0400 ospfd: bring ospf_check_auth() into focus 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 commit ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92 Author: Denis Ovsienko Date: Sun Feb 26 17:00:57 2012 +0400 ospfd: introduce ospf_auth_type_str[] commit b29adf9c3e69f298f748564a20abdf7274bbc549 Author: Denis Ovsienko Date: Mon Feb 20 23:08:10 2012 +0400 ospfd: fix packet length check for auth/LLS cases 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" commit 4e31de792ec5e48a97360b5b86196b4fa02996a3 Author: Denis Ovsienko Date: Fri Feb 17 16:20:50 2012 +0400 ospfd: introduce ospf_lsa_minlen[] (BZ#705) 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 commit 2d8223c5472129eba89d630dc4f2688ebeae1dd8 Author: Denis Ovsienko Date: Mon Jan 30 20:32:39 2012 +0400 ospfd: review ospf_check_md5_digest() Rewrite some pointer arithmetics without the additional variables and move byte order conversion inside the function. commit e52591481ed64e4cf9f26a76ad682ed7e6b451e7 Author: Denis Ovsienko Date: Mon Jan 30 16:07:18 2012 +0400 ospfd: review ospf_check_auth() 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. commit 75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c Author: Denis Ovsienko Date: Mon Jan 30 15:41:39 2012 +0400 ospfd: introduce ospf_packet_minlen[] (BZ#705) 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 commit 7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b Author: Denis Ovsienko Date: Fri Jan 20 22:32:10 2012 +0400 ospfd: fix ospf_packet_add_top() to use LOOKUP() commit 272ca1e33016b1cbf9c72038d5e631b0adb04dc9 Author: Denis Ovsienko Date: Sun Jan 15 19:12:19 2012 +0400 ospfd: use LOOKUP() for ospf_packet_type_str * 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 commit a20a4060c8b90e3d88ce97d439eee1a38260d7c5 Author: Paul Jakma Date: Thu Mar 8 16:42:31 2012 +0000 doc: Fix an apparently no longer legal @itemize @asis * 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. commit fa482834ea1a30eff056dbf0f36a6f3262460a08 Author: Paul Jakma Date: Thu Mar 8 13:51:21 2012 +0000 HACKING.tex: Change to a LaTeX version of HACKING * 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 commit 096259d0623ad1a30c5da139af180909b322c91f Author: Paul Jakma Date: Wed Mar 7 11:42:03 2012 +0000 HACKING: Typo fix commit 724b3aef4e59a48e9404ee17f09a504b20af0d37 Author: Paul Jakma Date: Wed Mar 7 11:02:05 2012 +0000 HACKING: Updates that have some initial consensus, for further iteration. commit 9fc75742397cf942ca9d684815ce63058b2576ff Merge: 543fb49 5861739 Author: Paul Jakma Date: Mon Mar 5 11:55:53 2012 +0000 Merge remote-tracking branch 'quagga-gnu.org/master' commit 5861739f8c38bc36ea9955e5cb2be2bf2f482d70 Author: Paul Jakma Date: Mon Jan 9 20:59:26 2012 +0000 bgpd: Open option parse errors don't NOTIFY, resulting in abort & DoS * 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. commit 50e7a3885da44f8f6c5c639e111109deb055cdf3 Author: Paul Jakma Date: Mon Jan 9 13:54:33 2012 +0000 tools/multiple-bgpd: Fix the PREV calculation so it works for <4 bgpd * 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. commit 543fb49c316df9af2d25f08ba7e0da0305c36b5e Author: Paul Jakma Date: Fri Mar 2 11:56:38 2012 +0000 HACKING.pending: Add Quagga-RE details commit b5043aabb03567b46a16463d88a8afce2acda35e Author: Paul Jakma Date: Tue Feb 28 18:32:56 2012 +0000 lib: fix incorrect thread list processing loops * 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 . commit 835315bfb49bff2b2fb354f2075c6d6693c2a151 Author: Paul Jakma Date: Wed Jan 18 12:28:30 2012 +0000 bgpd: Move up flag-check calls, parcel up attr-parser args, and other cleanups * 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. commit 3ecab4c8549574d09f8d8366098939a8ad3da6c4 Author: Paul Jakma Date: Tue Jan 17 13:31:33 2012 +0000 bgpd: consolidate attribute flag checks * 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 commit b51a3a31500133e3e26f12e7639f297c655bc735 Author: Vyacheslav Trushkin Date: Fri Feb 10 10:42:45 2012 +0400 ospf6d: remove defaults from iface config (BZ#550) commit ef2d5d100431031c32ea35b3c834b46cff16f511 Author: Phil Laverdiere Date: Mon Jan 2 20:04:26 2012 +0400 ospf6d: remove own routes on SIGTERM (BZ#448) commit 4c78376f96cd2ca56f1c6476b76fd659654431f5 Author: Denis Ovsienko Date: Sat Jan 21 22:50:19 2012 +0400 lib: fix logging of ZEBRA_HELLO message commit e854095932260b3e6187902aa9a7baa0e96b9428 Author: Everton Marques Date: Thu Feb 16 06:14:54 2012 +0100 lib: add THREAD_TIMER_MSEC_ON() * lib/thread.h: new timer macro, millisecond precision (this was cherrypicked from pimd to isolate all non-contained changes) From: Everton Marques Signed-off-by: David Lamparter commit e6b03b77766dce8009ad7b4a2392e14addf4ab0f Author: Fritz Reichmann Date: Sat Oct 1 17:49:48 2011 +0400 isisd: implement MD5 circuit authentication * Replace command "isis passwd" with "isis passwd {clear|md5}" * Verify HMAC MD5 on ISIS Hello PDUs * Add HMAC MD5 authentication to md5.h/md5.c from RFC2104 commit c25eaffdb2190149e768dc4ee4efc913c6d02992 Author: Fritz Reichmann Date: Sat Oct 1 17:43:12 2011 +0400 isisd: unexpected kernel routing table (BZ#544) Fix bug 544: isisd produces an unexpected routing table for wide-metric. * isis_spf.c: Accept VTYPE_PSEUDO_TE_IS and VTYPE_NONPSEUDO_TE_IS vertex types for SPF calculation * isis_pdu.c: Change order of TLVs to match Cisco to make bitwise comparison easier for Wireshark * isis_tlv.c: EXTREME_TLV_DEBUG for TLV debugging instead of EXTREME_DEBUG commit d034aa027ef44d0a74805c27ad2a4d8ea20395d1 Author: Peter Szilagyi Date: Sat Oct 1 17:22:51 2011 +0400 isisd: fix wrong next-hops from SPF The forwarding table was filled with wrong next-hops, and which is even worse, it was done in a totally non-deterministic way. The next-hop set for an IP prefix by isisd was the neighbor IS from which the flooded LSP about the IP prefix was arrived. So, if an IS received all the LSPs through its, say, eth0 interface, all entries in the forwarding table contained the next IS reachable via eth0 as the next-hop. The solution is to propagate the correct next-hop further from node to node as the SPF algorithm traverses the graph and selects the next node to be added to the set of already covered nodes. Also, the construction of the tentative node list (the nodes where the shortest path is not known yet) was buggy: if a node was already a member of this list with a certain path cost, and an alternative path was found to it with a lower cost while processing a pseudo-node LSP, it was not added to the list. This way, the path selected by isisd for a certain prefix was the first one it encountered during the LSDB processing. Signed-off-by: Fritz Reichmann commit 907fd95e502e10334e5390c73cc57588b88b8171 Author: Peter Szilagyi Date: Sat Oct 1 17:15:46 2011 +0400 isisd: send proper LSP after DIS election After an IS has been elected as the Designated IS for a LAN, it did not refresh the content of the pseudo-node after a new node has been connected to the same LAN. Instead, the periodically reoriginated pseudo-node LSP still contained only those IS neighbors that were already present when the DIS election process was commenced. The fix for the problem schedules an LSP regeneration rather than just reoriginating the same LSP with the old content. Signed-off-by: Fritz Reichmann commit 7fd6cd819ff98f0580b745ba637990df9c20ef0f Author: Peter Szilagyi Date: Sat Oct 1 17:11:45 2011 +0400 isisd: fix circuit state machine isisd has a so-called circuit state machine that takes care about the interface state changes, such as initializing, down, up. When an interface was brought down by a link failure, the interface information was deleted and set to NULL. When the link was restored later, the interface was looked up by the old pointer, but since it was cleared, it was never found again, resulting in an interface never entering the up state again. Also, the program regularly crashed because of a deleted pointer in the same context which was later accessed without any further checking. Signed-off-by: Fritz Reichmann commit 4c0cf00afc4340a429a9c4830f638b4593d7c3af Author: David Lamparter Date: Mon May 31 12:02:31 2010 +0200 ospf6d: fix out of bounds write in ospf6_prefix_apply_mask ospf6_prefix_apply_mask would write one byte beyond the 4/8/12 bytes allocated for prefixes of length 32/64/96. based on report and patch by Jon Andersson Reported-by: Jon Andersson Signed-off-by: David Lamparter commit 4afa50b393ff1fb34dd577888a05b81dfdced5af Author: Denis Ovsienko Date: Tue Jan 24 12:39:58 2012 +0400 zebra: justify rtadv VTY commands with arguments ipv6 nd ra-interval ipv6 nd ra-lifetime ipv6 nd reachable-time ipv6 nd home-agent-preference ipv6 nd home-agent-lifetime ipv6 nd router-preference Calls to atoi() and atol() are replaced with VTY_GET_INTEGER_RANGE() macro, command patterns are clarified and aliases of some commands are added for consistency. Other changes are listed below. * zebra/rtadv.c * ipv6_nd_ra_interval_msec(): resolve -Wsign-compare * ipv6_nd_ra_interval(): idem * rtadv_init(): update to list new aliases * doc/ipv6.texi: update to match current implementation commit 6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728 Author: Denis Ovsienko Date: Tue Jan 24 11:02:03 2012 +0400 zebra: freshen RFC references in rtadv RFC2461 was replaced by RFC4861 RFC3775 was replaced by RFC6275 draft-ietf-mip6-mipext-advapi-03 was replaced by RFC4584 commit aca43b656623f38dfa6ea835dacbdfec51d03a67 Author: Denis Ovsienko Date: Sun Jan 8 18:27:12 2012 +0400 zebra: use prefix_ipv6 in rtadv_prefix rtadv_prefix.prefix was casted to "struct prefix_ipv6" and had the same size, make it exactly this type to make the code a bit cleaner. commit 6bb1273e83c29b3aeff9584bc8f6272e773294ad Author: Denis Ovsienko Date: Sun Jan 8 17:46:34 2012 +0400 zebra: clear host bits of ND RA prefix option RFC4861 4.6.2. Prefix Information Prefix An IP address or a prefix of an IP address. The Prefix Length field contains the number of valid leading bits in the prefix. The bits in the prefix after the prefix length are reserved and MUST be initialized to zero by the sender and ignored by the receiver. * rtadv.c * ipv6_nd_prefix(): add missing call to apply_mask_ipv6() * no_ipv6_nd_prefix(): idem commit d660f698427277ce695a5b756f3143c8304274ea Author: Denis Ovsienko Date: Fri Dec 30 21:55:49 2011 +0400 zebra: justify some IPv6 ND RA timers wrt RFC There was a regression introduced with the previous commit: "ipv6 nd home-agent-lifetime 1800000" appeared by default in every interface section of running-config, although this command is invalid in this context. Troubleshooting and bugfixing of the issue tracked out several bugs in router advertisement procedures, some of which are fixed in this commit. * zebra/interface.c * if_zebra_new_hook(): update to treat -1 as "uninitialized" * nd_dump_vty(): idem * zebra/rtadv.c * rtadv_send_packet(): update processing of "router lifetime" field, "home agent" option and "home agent lifetime" field to conform to RFC6275 better * ipv6_nd_ra_interval_msec(): update MaxRtrAdvInterval range check, make sure it never exceeds (initialized) AdvDefaultLifetime * ipv6_nd_ra_interval(): idem * ipv6_nd_ra_lifetime(): update AdvDefaultLifetime range check, make sure it never falls below MaxRtrAdvInterval * ipv6_nd_homeagent_lifetime(): update HomeAgentLifetime range check * no_ipv6_nd_ra_lifetime(): update to treat -1 as "uninitialized" * no_ipv6_nd_homeagent_lifetime(): idem * rtadv_config_write(): idem commit 6134b875f39986564aced5e2d7329fcd852f17f4 Author: Denis Ovsienko Date: Tue Dec 27 18:49:15 2011 +0400 zebra: fix output of IPv6 ND RA options The following options could be configured for an interface, but were never visible in the config text: ipv6 nd adv-interval-option ipv6 nd home-agent-preference ipv6 nd home-agent-lifetime ipv6 nd home-agent-config-flag commit b4e45f67057be22133b6bec88cdf285d5c8214db Author: Denis Ovsienko Date: Mon Dec 5 16:35:14 2011 +0400 fix zebra protocol after MP-BGP changes The previous commits modified both zebra and bgpd for additional SAFI field, but not any other routing daemon, which led to zebra daemon crashing with failed assertion. commit 6eac79a6fed4842e00607c00c445213b51bba377 Author: Denis Ovsienko Date: Mon Dec 5 13:43:18 2011 +0400 zebra: fix recent MP-BGP commits for FreeBSD commit cb32fd690a957819865219a847e3c21a53a0f419 Author: G.Balaji Date: Sun Nov 27 20:09:40 2011 +0530 zebra: Removal of the following warning messages warning: too many arguments for format [-Wformat-extra-args] commit 73bfe0bd9adb8e4dfcee7239e56a425c6d58f4e9 Author: G.Balaji Date: Fri Sep 23 22:36:20 2011 +0530 bgpd: Addition of ipv6 network command in Multicast address family mode. The patch adds the ipv6 network command in the BGP multicast address family mode. commit f768f367bcd1f37a53c563495176a5a134caf234 Author: G.Balaji Date: Sat Nov 26 22:10:39 2011 +0400 zebra: IPv6 MP-BGP Routes addition and deletion This patch contains the following: 1. Addition of IPv6 SAFI_MULTICAST BGP routes into the RTM's RIB. 2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the RTM's RIB. commit c7ec179a95c1ed4fcd3d3be3f981c8c20dce534a Author: G.Balaji Date: Sat Nov 26 22:04:05 2011 +0400 bgpd: IPv6 MP-BGP Routes addition and deletion This patch contains the following: 1. Addition of IPv6 SAFI_MULTICAST BGP routes into the BGP Multicast RIB. 2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the BGP Multicast RIB. commit cddf391bf6839e9f093cef15508669c1f3f92122 Author: G.Balaji Date: Sat Nov 26 21:59:32 2011 +0400 zebra: IPv4 MP-BGP Routes addition and deletion This patch contains the following: 1. Addition of IPv4 SAFI_MULTICAST BGP routes into the RTM's RIB. 2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the RTM's RIB. commit 5a616c08ce089e25dc0e8da920727af4d11279bf Author: G.Balaji Date: Sat Nov 26 21:58:42 2011 +0400 bgpd: IPv4 MP-BGP Routes addition and deletion This patch contains the following: 1. Addition of IPv4 SAFI_MULTICAST BGP routes into the BGP Multicast RIB. 2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the BGP Multicast RIB. commit 6ae93c058725991df5a9ae35cefec368919b5fea Author: Denis Ovsienko Date: Tue Dec 27 10:45:36 2011 +0400 zebra: include MTU option in RA on request (BZ#665) This implements a new "ipv6 nd mtu <1-65535>" interface-level command. * doc/ipv6.texi: add description * zebra/rtadv.c * rtadv_send_packet(): send option type 5, when configured * ipv6_nd_mtu(): new VTY helper * no_ipv6_nd_mtu(): ditto * rtadv_config_write(): add new option * rtadv_init(): list new helpers commit fc98d16ea77372f4ab4231e8904f8467e8d1ef71 Author: Paul Jakma Date: Mon Jan 9 11:36:23 2012 +0000 bgpd: reinstate zlookup checks, required for BGP without zebra * bgp_nexthop.c: The nexthop lookup cache has to return success for queried nexthops if bgpd isn't connected to zebra, or else BGP without zebra doesn't work. commit dc00d2bb56aa6a84dd2328133f69db3c3e6d9dc7 Merge: f31d692 708a758 Author: Paul Jakma Date: Sun Jan 8 14:47:06 2012 +0000 Marker merge for 'RE-0.99.17.6' This marker merge (i.e. an 'ours' strategy merge) is a placeholder to show that all commits in Quagga-RE stable, to its release RE-0.99.17.6 tag, have been reviewed and merged into 'master'. commit f31d6927b2df4340bf9ff1cc9f20d52e168a3766 Author: Paul Jakma Date: Sun Jan 8 14:17:42 2012 +0000 bgpd: Fix incorrect attribute type code in call to bgp_attr_malformed commit 83a9a2213a73aeb9796b69327c87e89e2d3327ed Author: Paul Jakma Date: Sun Jan 8 14:15:03 2012 +0000 bgpd: Improve flag error messages in bgp_attr_aspath * bgpd/bgp_attr.c: (bgp_attr_aspath) error message could be misleading, clearly log what flag was incorrect. (Problem noted in "bgpd: fix error message in bgp_attr_aspath()" in Quagga-RE) commit 9ed79b53eb89b8a663eb368ef5f7d47701f231df Author: Denis Ovsienko Date: Mon Oct 24 18:45:05 2011 +0400 lib: use prefix bit length macros commit ce3cdcfbed2ca65d0d3a12b926dd1103910a6056 Author: Denis Ovsienko Date: Mon Oct 24 18:17:09 2011 +0400 ospfd: use IS_LSA_SELF() where appropriate commit afcb767922509c4d998f1c567e350b9809c148ab Author: Denis Ovsienko Date: Sun Oct 23 22:32:44 2011 +0400 bgpd: rewrite attr flag error logging * bgp_attr.c * attr_flag_str: new message list * bgp_attr_flags_diagnose(): new function, implements previously added error logging in a generic way * bgp_attr_origin(): use bgp_attr_flags_diagnose() * bgp_attr_nexthop(): ditto * bgp_attr_med(): ditto * bgp_attr_local_pref(): ditto * bgp_attr_atomic(): ditto * bgp_attr_originator_id(): ditto * bgp_attr_cluster_list(): ditto * bgp_mp_reach_parse(): ditto * bgp_mp_unreach_parse(): ditto commit d8bcd9e9c6a1801b52b166fa3873eb468ac3c5cb Author: Denis Ovsienko Date: Fri Oct 7 20:43:59 2011 +0400 doc: "[no] router zebra" does not belong to ospfd commit 8216f53b73d8eb375615ad4395deace11d1e22d6 Author: Denis Ovsienko Date: Mon Oct 3 14:08:01 2011 +0400 ospfd: justify ospf_default_originate_timer() The function is implemented in ospf_lsa.c, move its "extern" declaration to ospf_lsa.h for consistency. commit 72f062b6ebd7f279dc3f0b66acdb0b718ff42e40 Author: Denis Ovsienko Date: Sun Aug 28 22:38:45 2011 +0400 ospfd: address more trivial compiler warnings * ospf_ase.c * ospf_ase_complete_direct_routes(): dismiss unused variable commit 5e1731ac1d8593c1317d5d907eda62b52b17470f Author: Denis Ovsienko Date: Sat Aug 20 22:45:58 2011 +0400 ospf6d: ospf6_lsa_cmd_init() does not exist commit 0e8032d69961ae196c11ba6ead856084c7acf7c2 Author: Denis Ovsienko Date: Tue Aug 9 14:42:58 2011 +0400 bgpd: improve "show ip bgp scan detail" * bgp_nexthop.c (show_ip_bgp_scan_tables): access proper structure field in AF_INET6 case, handle ifindex NH type properly commit b64bfc1c4a552fc0b4dd024d5f77171ec848a5df Author: Denis Ovsienko Date: Mon Aug 8 19:36:44 2011 +0400 bgpd: dismiss some zlookup checks bgp_nexthop_onlink(): zlookup is not used here at all bgp_nexthop_lookup_ipv6(): rely on the detection performed by "query" function (this also changes the fallback value to 0), reorder if-block bgp_nexthop_lookup(): idem commit 318f0d8a7f5e8e87086bbf2a9e7c4b35638951ac Author: Denis Ovsienko Date: Fri Aug 5 21:47:08 2011 +0400 bgpd: add "show ip bgp scan detail" command * bgp_nexthop.c: (show_ip_bgp_scan) transform into show_ip_bgp_scan_tables(), which uses inet_ntop() and can dump nexthops on request; (show_ip_bgp_scan_detail_cmd) new function commit 8e80bdf20f493a71bcf74262ed3aa3a2437f4df6 Author: Denis Ovsienko Date: Fri Aug 5 18:52:52 2011 +0400 bgpd: touch nexthop handling code bgp_nexthop_lookup_ipv6(): declare variables where they are actually used, drop no-op initialization (the field is already 0) bgp_nexthop_lookup(): ditto bgp_nexthop_check_ebgp(): rename to bgp_nexthop_onlink() bgp_nexthop_cache_changed(): rename to bgp_nexthop_cache_different() commit 23be94ea00fadace0007b6ffa6c9107124249e91 Author: Paul Jakma Date: Fri Jan 6 16:07:39 2012 +0000 lib/if: trivial, fix rarely used if debug function to print everything * if.c: (if_dump) loop that doesn't do anything, wants to be before the zlog of what it's meant to print out so all the connected addresses get printed out. Trival: just a debug function commit f63f06da2e7be6b17c72dd6110aae179f42f3700 Author: Paul Jakma Date: Fri Apr 8 12:44:43 2011 +0100 general: remove inline qualifiers and move in-header functions to objects * (general) Move functions in headers into files, to be compiled into shared object files. Remove inline qualifier from functions. Let the compiler do the work. commit 708a758fb8013d4b40ae09f81e4c5830279bf10c Author: Denis Ovsienko Date: Thu Jan 5 17:46:53 2012 +0400 version RE-0.99.17.6 commit f382ad5696a2b0d4cc1dd16752638c9c4dc2b2f8 Author: Denis Ovsienko Date: Tue Dec 27 18:06:45 2011 +0400 doc: update BGP RFC references commit 2894cdc344ab15d8a80906d77cfe90378f82f71d Author: Denis Ovsienko Date: Tue Dec 27 10:18:47 2011 +0400 zebra: fix IPv6 RA wrt interface removal (BZ#480) commit 6dd6c307bf697184a77fd777c0226399de630be5 Author: Matthias Ferdinand Date: Mon Dec 26 16:35:30 2011 +0400 zebra: fix ifindex test condition (BZ#487) When the same ip address is used on several interfaces, and one of them gets deleted (or equivalent: set to down and then address removed), rib_delete_ipv[46] will also remove the connected route from other interfaces. rib_delete_ipv[46] is called twice when an interface is deleted: - for the "ifdown" event - for the address removal (note: this may be specific to the netlink interface of linux) The second call does not find the connected route to that same ifindex anymore, but deletes similar connected routes to any other ifindex instead. Reason: the ifindex check is on the same level as the check for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything matches except for the ifindex, the "else" part (intended for different route types) is executed, thus removing the route from the wrong interface. fix: move ifindex check inside the "then" part of the check for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected routes to other ifindexes will not spill over to the "else" part for different route types anymore. commit b4b315989f9f73bdab4224eb3df80781fa986143 Author: Vyacheslav Trushkin Date: Thu Dec 22 18:24:19 2011 +0400 ospf6d: fix compiler warning messages * fix disagreement with C99 in zlog_debug calls Format specifier in some zlog_debug calls for size_t values was changed in order to C99 ('%u' -> '%zu'). * fix -Wsign-compare warnings Type of return value of ospf6_packet_max() was changed. commit 830526a51292e6241f7b6415e070f3780fe18e1e Author: Ulrich Weber Date: Wed Dec 21 02:24:11 2011 +0400 lib: fix some strtoul() use cases ...otherwise 4294967295 is not a valid value on 32bit systems commit 65cd7a4a66145cf666df707781c3e46297158c58 Author: Tom Goff Date: Wed Nov 10 13:03:02 2010 -0800 ospf6d: Route locking (memory) cleanup * ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even when there's no next route. This is consistent with how ospf6_route_next() behaves. * ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last route considered is always unlocked. This is needed when the for loop terminates because ospf6_route_is_prefix() returns zero. Signed-off-by: Vyacheslav Trushkin commit 36d3e8d828e18c5c4cd097f659e3984ff02532cb Author: Tom Goff Date: Wed Nov 10 13:01:41 2010 -0800 ospf6d: Have ospf6d cleanup when it terminates normally A clean exit makes it easier to use memory debuggers. * ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map cleanup. * ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa handler vector. * ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to gracefully exit. * ospf6_message.c: (ospf6_message_terminate) Add a function that frees the send and receive buffers. * ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function. Disable ospf6 before freeing everything. Signed-off-by: Vyacheslav Trushkin Conflicts: ospf6d/ospf6_lsa.h commit a809d1cc54a621f4b31397ee5b8b79151baa4bf2 Author: Tom Goff Date: Wed Nov 10 13:00:54 2010 -0800 lib: Add a function to delete all interfaces if.c: (if_terminate) This adds a cleanup function that can be called when a daemon exits, similar to vty_terminate(). commit 651e70d7f419ee7af75113f80e688c0100e9cff5 Author: Denis Ovsienko Date: Tue Dec 27 18:06:45 2011 +0400 doc: update BGP RFC references commit fb5174a27e4122edf849c524861dfcd92d8b19f5 Author: Denis Ovsienko Date: Tue Dec 27 10:18:47 2011 +0400 zebra: fix IPv6 RA wrt interface removal (BZ#480) commit 4f1735fd6ac5d0881bafa9bd421e00645b6c60fd Author: Matthias Ferdinand Date: Mon Dec 26 16:35:30 2011 +0400 zebra: fix ifindex test condition (BZ#487) When the same ip address is used on several interfaces, and one of them gets deleted (or equivalent: set to down and then address removed), rib_delete_ipv[46] will also remove the connected route from other interfaces. rib_delete_ipv[46] is called twice when an interface is deleted: - for the "ifdown" event - for the address removal (note: this may be specific to the netlink interface of linux) The second call does not find the connected route to that same ifindex anymore, but deletes similar connected routes to any other ifindex instead. Reason: the ifindex check is on the same level as the check for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything matches except for the ifindex, the "else" part (intended for different route types) is executed, thus removing the route from the wrong interface. fix: move ifindex check inside the "then" part of the check for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected routes to other ifindexes will not spill over to the "else" part for different route types anymore. commit cba1fab2d7e22921a03b8b886772daec8b5977c4 Author: Vyacheslav Trushkin Date: Thu Dec 22 18:24:19 2011 +0400 ospf6d: fix compiler warning messages * fix disagreement with C99 in zlog_debug calls Format specifier in some zlog_debug calls for size_t values was changed in order to C99 ('%u' -> '%zu'). * fix -Wsign-compare warnings Type of return value of ospf6_packet_max() was changed. commit 664711c1f4cc218073783ff6ce362093debd7b53 Author: Ulrich Weber Date: Wed Dec 21 02:24:11 2011 +0400 lib: fix some strtoul() use cases ...otherwise 4294967295 is not a valid value on 32bit systems commit 6fd16207fee6d4d09f29ed7ecf26303a7220e473 Author: Vyacheslav Trushkin Date: Tue Dec 20 20:52:31 2011 +0400 ospf6d: add verifying user's privileges commit 4e677f52db2276b92bcc201b4379a66a83d45caa Author: Denis Ovsienko Date: Sun Dec 18 16:27:02 2011 +0400 ospfd: fix bug in NSSA ABR status check * ospf_abr.c * ospf_abr_nssa_am_elected(): feed "best" instead of "address of best" into IPV4_ADDR_CMP(), because "best" is a pointer; also, mean s_addr field of the structures to get better typed pointers commit fe40bfa2e1b913e24d6b8374fd83a19d00ad7c1c Author: Denis Ovsienko Date: Sun Dec 18 15:40:17 2011 +0400 lib: address type-punned pointers in prefix_same() IPV4_ADDR_SAME() wasn't passed the right union member, this could cause a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before the error could be created by macro upgrade. commit 733cd9e5792648de50da3c00805aacb51cb27048 Author: Denis Ovsienko Date: Sat Dec 17 19:39:30 2011 +0400 bgpd: justify checks for IPv4 class D/E * lib/prefix.h * IPV4_CLASS_DE(): make consistent with counterpart macros * bgp_packet.c * bgp_open_receive(): test using macro instead of ">=" * bgp_route.c * bgp_update_rsclient(): idem * bgp_update_main(): idem commit de5ccb96023181765c9904ab40e645c397f536d6 Author: Dmitrij Tejblum Date: Mon Dec 12 20:30:10 2011 +0400 ospfd: fix packet reception for FreeBSD 10. * ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not subtract the IP header size from ip_len. This is the patch from FreeBSD's ports/net/quagga/files/patch-ospfd__ospf_packet.c, by Boris Kovalenko. commit 2ea1ab1c30c765cd4703794fcfaf044454fb533c Author: Vyacheslav Trushkin Date: Sun Dec 11 18:48:47 2011 +0400 zebra: ZEBRA_HELLO and mopping up routes (BZ#448) ZEBRA_HELLO message is used by routing daemons to inform zebra what type of routes daemon will be announcing to zebra. Also zebra uses route_type_oaths array to track which daemon announces which protocol. Zebra mops up routes if daemon didn't for some reason. commit 2654e43ca2eaa8d93268c9ec85ac2dd968e5fb94 Author: Denis Ovsienko Date: Fri Dec 16 16:25:02 2011 +0400 lib: fix type-punning in ip_masklen() ip_masklen() was likely to return incorrect results after being compiled with -fstrict-aliasing (-O2, -O3, -Os) commit d171bf58ef12ace43d48565e6870722dece1e6ed Author: Denis Ovsienko Date: Sun Dec 4 23:21:55 2011 +0400 lib: optimize ip_masklen() The new implementation makes use of a 64KB mapping table, which makes it possible to compute masklen faster and with constant execution time. The map also allows for additional version of the function, which can detect errors in input argument. The previous implementation had a variable cost of execution, which depended on masklen in a non-linear manner, and at its worst (/31) was 4 times slower, than the new implementation. The only case of old function just slightly outperforming the new one is /0, which is of little practical interest. commit 13351032d1d1632dbaf540cf33b7bebbc748c415 Author: Vyacheslav Trushkin Date: Tue Dec 20 20:52:31 2011 +0400 ospf6d: add verifying user's privileges commit 85136e904861775bdf6fbbbd4f0080f06e749bcb Author: Denis Ovsienko Date: Sun Dec 18 16:27:02 2011 +0400 ospfd: fix bug in NSSA ABR status check * ospf_abr.c * ospf_abr_nssa_am_elected(): feed "best" instead of "address of best" into IPV4_ADDR_CMP(), because "best" is a pointer; also, mean s_addr field of the structures to get better typed pointers commit 7eed92b9653b09f064e827e887c29ee11122b4fe Author: Denis Ovsienko Date: Sun Dec 18 15:40:17 2011 +0400 lib: address type-punned pointers in prefix_same() IPV4_ADDR_SAME() wasn't passed the right union member, this could cause a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before the error could be created by macro upgrade. commit 45b341f72df6d7dd89133dfd21f43cf1cca74ce5 Author: Denis Ovsienko Date: Sat Dec 17 19:39:30 2011 +0400 bgpd: justify checks for IPv4 class D/E * lib/prefix.h * IPV4_CLASS_DE(): make consistent with counterpart macros * bgp_packet.c * bgp_open_receive(): test using macro instead of ">=" * bgp_route.c * bgp_update_rsclient(): idem * bgp_update_main(): idem commit b31d8fc3016615571f79161b8405aa4033cdfb8d Author: Dmitrij Tejblum Date: Mon Dec 12 20:30:10 2011 +0400 ospfd: fix packet reception for FreeBSD 10. * ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not subtract the IP header size from ip_len. This is the patch from FreeBSD's ports/net/quagga/files/patch-ospfd__ospf_packet.c, by Boris Kovalenko. commit 89e9f82e0b717c0e39bbffa104f9d9f817c19b46 Author: Vyacheslav Trushkin Date: Sun Dec 11 18:48:47 2011 +0400 zebra: ZEBRA_HELLO and mopping up routes (BZ#448) ZEBRA_HELLO message is used by routing daemons to inform zebra what type of routes daemon will be announcing to zebra. Also zebra uses route_type_oaths array to track which daemon announces which protocol. Zebra mops up routes if daemon didn't for some reason. commit 07bb964ef11d34235570427cd9bc4111956e31b7 Author: Stephen Hemminger Date: Wed Dec 7 01:29:49 2011 +0400 lib: fix compile warnings from set-never-used The if_dump code had empty loop, that caused set-never-used warning. commit 94e7cd90feb6af51b7e21d5289dc0edc1ba94a99 Author: Denis Ovsienko Date: Wed Dec 7 01:35:11 2011 +0400 Revert "lib: address -Wunused-but-set-variable" Stephen Hemminger's commits contain all the changes and several other warning fixes. This reverts commit 6947dbebdc91b6272f8107a6e0dd211457438606. commit 4f5e717413b6627310a245d16f945660c9d60736 Author: Stephen Hemminger Date: Wed Dec 7 00:55:15 2011 +0400 lib: fix SMUX compiler warnings Make progname a string, and cast when calling asn1. Remove variable set but never used. commit 7e7a2d38b2d5d5edd3be7d6754d67c3231ee215e Author: Stephen Hemminger Date: Wed Dec 7 00:09:56 2011 +0400 zebra: fix warnings in forward proc Check result of fgets(), and don't set variable that is never used. commit 8502229b7ed198d994017e4fd04000d429ca9c8d Author: Stephen Hemminger Date: Wed Dec 7 00:04:46 2011 +0400 bgpd: cleanup privs on termination When doing valgrind testing, the privledges from zprivs_init() need to be cleaned up on exit. commit a80e20d17597253e74e22aed6b1a85417f667b49 Author: Stephen Hemminger Date: Tue Dec 6 23:54:17 2011 +0400 ospfd: remove unused code The code for nssa_range and other bits that were written but never used. commit 840faaeb00f1617649332dad82952e21e7c7fda7 Author: Stephen Hemminger Date: Tue Dec 6 14:51:10 2011 +0400 bgpd: store nexthop info for redistributed IPV6 routes BGP was ignoring nexthop info for static and other redistributed routes for IPv6. Build extra attribute info to store the nexthop. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=6073 commit 4fafd3deef6eecab229e8b35189ffbc1f1ce9806 Author: Stephen Hemminger Date: Tue Dec 6 14:46:42 2011 +0400 ospfd: avoid redundant lookup in ospf_redistribute_withdraw The old algorithim looked up every node twice as it withdrew the entry. It looks up entry once in redistribute_withdraw, then looks it up again info_delete. Use result of first lookup to do the free directly. This may explain the slow performance observed in https://bugzilla.vyatta.com/show_bug.cgi?id=4421 commit c17fbd6b1eb38e71aba65c593fa41f2e54f0b896 Author: Stephen Hemminger Date: Tue Dec 6 14:09:18 2011 +0400 lib: fix memory leak on connect() failure Change sockunion_log() to not use strdup(). This fixes a small memory leak that occurs on every failed connect(), and is simpler/cleaner. commit ed269db39a167251f9b7e8e261c7f53902c094f9 Author: Stephen Hemminger Date: Tue Dec 6 14:04:12 2011 +0400 lib: call filter delete hook before freeing access list The delete_hook was being run after calling access list delete function. This would cause ospf to dereference a NULL, in ospf_filter_update because 'access->name' was already freed. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=7654 commit ce77002e908e8c9eeff780a6a34143af6758a17f Author: Denis Ovsienko Date: Fri Dec 16 16:25:02 2011 +0400 lib: fix type-punning in ip_masklen() ip_masklen() was likely to return incorrect results after being compiled with -fstrict-aliasing (-O2, -O3, -Os) commit e1fabbb86c2558b336b83de443a4fde4b2a8db90 Author: Denis Ovsienko Date: Sun Dec 4 23:21:55 2011 +0400 lib: optimize ip_masklen() The new implementation makes use of a 64KB mapping table, which makes it possible to compute masklen faster and with constant execution time. The map also allows for additional version of the function, which can detect errors in input argument. The previous implementation had a variable cost of execution, which depended on masklen in a non-linear manner, and at its worst (/31) was 4 times slower, than the new implementation. The only case of old function just slightly outperforming the new one is /0, which is of little practical interest. commit 8c7f49d27767886b3706dfca11c1e13abeab7c63 Author: Denis Ovsienko Date: Sun Jan 1 16:33:12 2012 +0400 Revert "lib: optimize apply_mask_ipv6()" Experience with IPv4 counterpart of this function suggests, that this way of type-punning is likely to cause errors. commit bf19277c341e6c1b94046c628c0e6d0f0b20d536 Author: Denis Ovsienko Date: Sun Jan 1 16:33:12 2012 +0400 Revert "lib: optimize apply_mask_ipv6()" Experience with IPv4 counterpart of this function suggests, that this way of type-punning is likely to cause errors. commit 223da1a912305f2cac6f72c3b480ce103a25d7d6 Author: Jaroslav Fojtik Date: Sun Dec 11 18:22:16 2011 +0400 ospfd: more info in LSA checksum warning (BZ#685) commit 7b0d1c6d31d50fbf74f84cb60daaedd904b35171 Author: Jaroslav Fojtik Date: Sun Dec 11 18:22:16 2011 +0400 ospfd: more info in LSA checksum warning (BZ#685) commit 9206f9ecd5526778bf449bbb12f056d681d3b040 Author: Stephen Hemminger Date: Sun Dec 18 19:43:40 2011 +0400 fix set never used warnings (This patch was modified to leave calls to stream_getl() in place, they are necessary for the stream's internal pointer to advance to the correct position. -- Denis) Signed-off-by: Denis Ovsienko Fix gcc warnings about varables that are set but never used. * bgpd/bgp_attr.c * cluster_unintern(): ret * transit_unintern(): ret * bgp_attr_default_intern(): attre * bgp_mp_reach_parse(): rd_high, rd_low * bgpd/bgp_route.c * bgp_announce_check_rsclient(): bgp * bgpd/bgp_zebra.c * zebra_read_ipv4(): ifindex * zebra_read_ipv6(): ifindex * bgpd/bgpd.c * bgp_config_write_peer(): filter * lib/distribute.c * distribute_list_all(): dist * distribute_list(): dist * distribute_list_prefix_all(): dist * distribute_list_prefix(): dist * lib/if_rmap.c * if_rmap(): if_rmap * lib/vty.c * vty_accept(): vty * lib/zclient.c * zclient_read(): ret * zebra/irdp_interface.c * if_group(): zi * zebra/rt_netlink.c * kernel_read(): ret, sock commit b48cebbba0dc01ad7d1fbd7cbcc39a11e1ae972d Author: Tom Goff Date: Wed Dec 14 14:11:29 2011 +0400 ospf6d: always remove the result of a previous SPF calculation This is needed to avoid stale routes in some cases; the regression was introduced by commit 1d19234e79c77a7d55194b513f2a77c6a691bc2c. * ospf6_spf.c: (ospf6_spf_calculation) Call ospf6_spf_table_finish() before possibly returning if no router-LSA is found for the root of the SPF tree. commit bb915f5fa60de1a5b7e6089fcfc680281a590463 Author: Denis Ovsienko Date: Tue Dec 13 21:11:39 2011 +0400 bgpd: fix regression in ORF procesing (BZ#688) This issue has been pointed out by Lou Berger and Tim Browski. * bgp_packet.c * bgp_route_refresh_receive(): restore if() condition, which was broken by commit fdbc8e77c88f751924299d0bc752371d5cc31116 commit 32ca97392057d279eeddd1aef36c1836880e8b89 Author: Denis Ovsienko Date: Tue Oct 18 22:02:52 2011 +0400 lib: optimize apply_mask_ipv6() commit caff7905e2d28e4d5e25c0a4ffacbb22e28a7121 Author: Denis Ovsienko Date: Tue Oct 18 18:33:53 2011 +0400 lib: optimize apply_mask_ipv4() commit 21f569e37d62e3c1de6e41a4e5667c0e28279bb8 Author: Denis Ovsienko Date: Mon Oct 17 21:11:10 2011 +0400 lib: make masklen2ip6() safer and faster commit 051954f574b9c26458518a7029aeed118f0da620 Author: Denis Ovsienko Date: Tue Oct 11 15:17:45 2011 +0400 lib: fix endianness of masklen2ip() commit 9663386f16e6285a322747514527fdf1d19788e4 Author: Denis Ovsienko Date: Sat Oct 8 18:15:21 2011 +0400 lib: make masklen2ip() safer and faster commit 5031ed1347191ee3e0767cfa44e7047c36d37bd1 Author: Denis Ovsienko Date: Fri Oct 14 21:59:58 2011 +0400 ospf6d: decode message type with LOOKUP() * ospf6_message.h * OSPF6_MESSAGE_TYPE_CANONICAL(): dismiss * OSPF6_MESSAGE_TYPE_NAME(): dismiss * ospf6_message.c * ospf6_message_type_str: rewrite as a message list, add max value * ospf6_packet_examin(): update to use LOOKUP() * ospf6_receive(): idem * ospf6_send(): idem commit fa0796661c9cd68f20882ceb16e9d304a12a6acd Author: Denis Ovsienko Date: Sat Oct 8 17:22:45 2011 +0400 ospf6d: make some old sizing checks assertions As long as ospf6_packet_examin() is now the single checkpoint for received packets, most of the old checks performed elsewhere can be converted into assert() constructs. Malformed input data at respective points can be attributed solely to a programming error, not a malformed packet. * ospf6_message.c * ospf6_hello_print() * ospf6_dbdesc_print() * ospf6_lsreq_print() * ospf6_lsupdate_print() * ospf6_lsack_print() * ospf6_hello_recv() * ospf6_dbdesc_recv_master() * ospf6_dbdesc_recv_slave() * ospf6_lsreq_recv() * ospf6_lsupdate_recv() * ospf6_lsupdate_recv() * ospf6_lsack_recv() * ospf6_receive() commit 0ead5c183c36b36c8545ef8b04b778f5238a5db9 Author: Denis Ovsienko Date: Fri Oct 14 20:56:19 2011 +0400 lib: spelling commit ca0512692156d5bbb902523d2f123fc89dbec1ab Author: David Lamparter Date: Sun Oct 4 16:21:49 2009 +0200 lib: add sockopt helper for setting IPV6_V6ONLY and use it getaddrinfo returns a list of socket parameters for listening. it will contain both IPv4 and IPv6 listening sockets. unless we use IPV6_V6ONLY on the IPv6 ones, only the socket listed first will work. if the IPv4 one came first, the IPv6 one would get an "Address in use" error. this functionality was already present for bgpd and its listening sockets. as it is needed for vtys as well, make it a common helper. Conflicts: lib/sockunion.c commit e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9 Author: David Lamparter Date: Wed Sep 16 01:52:42 2009 +0200 lib: put route_types.txt to real use this replaces most occurences of routing protocol lists by preprocessor defines from route_types.h. the latter is autogenerated from route_types.txt by a perl script (previously awk). adding a routing protocol now is mostly a matter of changing route_types.txt and log.c. Conflicts: lib/route_types.awk commit ebf08631cad8a420fc6bfb7c45af5496dc11023e Author: David Lamparter Date: Thu Aug 27 00:27:40 2009 +0200 zebra: fix redistribution of new protocols redistribute is currently limited to "known" protocols. there is no reason for this limitation, so, remove it. commit 7052f22880f439a6ee691dd9436e1bda932f7b3b Author: David Lamparter Date: Thu Aug 27 00:28:28 2009 +0200 rib: default distance value for new protocols (v2) adding protocols and forgetting to update zebra_rib.c currently causes a beyond end of array access for the default distance value. fix by making 150 the default distance for unknown routing protocols. 150 is higher than all other IGPs but lower than iBGP (200) commit ca9f342c2c35523b7bb34631b4f75cad1232355b Author: David Lamparter Date: Wed Sep 16 02:11:00 2009 +0200 build: fixup autoconf for cross-compiling (to OpenWRT) MALLOC/REALLOC aren't used properly (no rpl_malloc), remove them while at it, infer some sane ipforwarding method from the OS value. (v2 on that, "==" is not a proper operator for standard "test") commit a34eb3689ca0bb88e2ae7b95b01eb8887048ce15 Author: Tom Goff Date: Wed Nov 25 20:36:06 2009 +0000 zebra: set the interface link-layer socket address * kernel_socket.c: (ifm_read) The reorganization from commit 6fe70d1b35c189cb1e488b2c26551ba7baac6148 removed setting the interface link-layer socket address structure on routing socket platforms. This restores saving the link-layer information because it might be used elsewhere: rtm_write() when no gateway is given, if_dump_vty() and rtadv_send_packet(). commit 85a2ebf2a14d8d7b40fd25b1217f953dbf69f065 Author: Denis Ovsienko Date: Mon Dec 5 19:36:06 2011 +0400 zebra: spelling commit 05e54ee3df973194f2a00e3ea0b1da7bebc71fd6 Author: Denis Ovsienko Date: Sat Dec 3 17:45:17 2011 +0400 build: delete .cvsignore files commit ad8d4802a3078de694539fa9bae12322fc82042f Author: Denis Ovsienko Date: Fri Dec 2 20:02:40 2011 +0400 ospfd: spelling commit 3414d03545205eda9fb47890e01b780485a613c6 Author: Vyacheslav Trushkin Date: Wed Nov 30 21:03:44 2011 +0400 lib: clearing zclient.c for some cases of building lib/zclient.c: using of HAVE_TCP_ZEBRA in zclient_socket_* definitions extended by else clause. commit b51146856e660bcec723f535c17dc1c38b2f6efc Author: Vyacheslav Trushkin Date: Fri Nov 25 18:51:48 2011 +0400 quagga: option "-z" ("--socket ") added All daemons modified to support custom path to zserv socket. lib: generalize a zclient connection zclient_socket_connect added. zclient_socket and zclient_socket_un were hidden under static expression. "zclient_serv_path_set" modified. commit 2f658673fa477b58ed38caf94c156c95948de382 Author: Vyacheslav Trushkin Date: Fri Nov 25 17:56:21 2011 +0400 isisd: indent longopts array commit 1add115a9cfd3a2ee33a61731008b6ece90ec61d Author: Vyacheslav Trushkin Date: Tue Nov 22 20:15:10 2011 +0400 bgpd: implement 'match probability' in route-maps New clause 'match probability ' was added in route-maps (bgpd/bgp_routemap.c modified). commit 9a9446eabb8f153251d6d93d225a68ca44b436ac Author: Vyacheslav Trushkin Date: Mon Nov 21 20:26:39 2011 +0400 ospf6d: justify multicast group management * ospf6_network.[ch] * ospf6_sso(): new function supersedes ospf6_join_allspfrouters(), ospf6_leave_allspfrouters(), ospf6_join_alldrouters() and ospf6_leave_alldrouters() * ospf6_interface.c * ospf6_interface_state_change(): update respectively * interface_up(): ditto * interface_down(): ditto commit 6989880ad7699cb6bf0cfc0fbb95da51430652cf Author: Ulrich Weber Date: Thu Nov 17 21:35:08 2011 +0400 ripngd: limit max of "timers basic" to 65535 as documented and use VTY_GET_INTEGER_RANGE instead of calling strtoul commit bde12e3fd5e498a266e813a5751c1b2d21e46ca5 Author: Ulrich Weber Date: Wed Nov 16 19:32:12 2011 +0400 bgp: use VTY_GET_INTEGER_RANGE() in bgp_clear() Second patch replaces "VTY_GET_LONG ("AS", as_ul, arg);" by "VTY_GET_INTEGER_RANGE ("AS", as, arg, 1, BGP_AS4_MAX);" as done in all other code, which parses AS numbers. commit 42a7debf3c76b8001ce820e104a29d2f693c7cb7 Author: Vyacheslav Trushkin Date: Wed Nov 16 14:22:03 2011 +0400 ospf6d: implement 'match interface' for route-maps ospf6_routemap_rule_match_interface* was imported from ospfd daemon with minor changes. new CLI options defined. `ospf6_routemap_rule_match_interface' was changed to support IPv6 (ospfv3) route's external information. commit 6258c2ae35ec40c07e87c010423e6b93ac39bd66 Author: Denis Ovsienko Date: Mon Dec 5 19:36:06 2011 +0400 zebra: spelling commit 1b960ed436a5515747ff4f4d15b1389e43f3b63c Author: Denis Ovsienko Date: Sat Dec 3 17:45:17 2011 +0400 build: delete .cvsignore files commit 42140fb1b1f88310565c6b1d36645aa15c58424d Author: Denis Ovsienko Date: Fri Dec 2 20:02:40 2011 +0400 ospfd: spelling commit d5cd9a9758932dc644eb8b3f0eff3d2e17a7d677 Author: Vyacheslav Trushkin Date: Wed Nov 30 21:03:44 2011 +0400 lib: clearing zclient.c for some cases of building lib/zclient.c: using of HAVE_TCP_ZEBRA in zclient_socket_* definitions extended by else clause. commit 271ee735ed3a42a1fe52f6401ddf72bd5d3e4f10 Author: Vyacheslav Trushkin Date: Fri Nov 25 18:51:48 2011 +0400 quagga: option "-z" ("--socket ") added All daemons modified to support custom path to zserv socket. lib: generalize a zclient connection zclient_socket_connect added. zclient_socket and zclient_socket_un were hidden under static expression. "zclient_serv_path_set" modified. commit 844ee4a8acf1a7b34e6a4a0bdf701496302a7416 Author: Vyacheslav Trushkin Date: Fri Nov 25 17:56:21 2011 +0400 isisd: indent longopts array commit 1c8afb7c20600165f882d87d7564c6c982c65665 Author: Vyacheslav Trushkin Date: Tue Nov 22 20:15:10 2011 +0400 bgpd: implement 'match probability' in route-maps New clause 'match probability ' was added in route-maps (bgpd/bgp_routemap.c modified). commit fd31c50bc30d002e334c9764293f1c4f04a99515 Author: Vyacheslav Trushkin Date: Mon Nov 21 20:26:39 2011 +0400 ospf6d: justify multicast group management * ospf6_network.[ch] * ospf6_sso(): new function supersedes ospf6_join_allspfrouters(), ospf6_leave_allspfrouters(), ospf6_join_alldrouters() and ospf6_leave_alldrouters() * ospf6_interface.c * ospf6_interface_state_change(): update respectively * interface_up(): ditto * interface_down(): ditto commit c0cad4368858d24caedd7e7d2bb776b6d4dd6eb3 Author: Ulrich Weber Date: Thu Nov 17 21:35:08 2011 +0400 ripngd: limit max of "timers basic" to 65535 as documented and use VTY_GET_INTEGER_RANGE instead of calling strtoul commit 5009160c748b19a543a2f4fbd01d9de69ca71955 Author: Ulrich Weber Date: Wed Nov 16 19:32:12 2011 +0400 bgp: use VTY_GET_INTEGER_RANGE() in bgp_clear() Second patch replaces "VTY_GET_LONG ("AS", as_ul, arg);" by "VTY_GET_INTEGER_RANGE ("AS", as, arg, 1, BGP_AS4_MAX);" as done in all other code, which parses AS numbers. commit 1ce08787910a60635d9b5c09617aaabd55ee00ac Author: Vyacheslav Trushkin Date: Wed Nov 16 14:22:03 2011 +0400 ospf6d: implement 'match interface' for route-maps ospf6_routemap_rule_match_interface* was imported from ospfd daemon with minor changes. new CLI options defined. `ospf6_routemap_rule_match_interface' was changed to support IPv6 (ospfv3) route's external information. commit 004b1238a21b9b6c28640f37213dc85f0da39abe Author: Stephen Hemminger Date: Wed Dec 7 00:55:15 2011 +0400 lib: fix SMUX compiler warnings Make progname a string, and cast when calling asn1. Remove variable set but never used. commit 3c14ebb0810e73ad899ae45e5fb2758153057e0e Author: Stephen Hemminger Date: Wed Dec 7 01:29:49 2011 +0400 lib: fix compile warnings from set-never-used The if_dump code had empty loop, that caused set-never-used warning. commit c143c38bc707194d52aec544e62e5485c6c4bc08 Author: Stephen Hemminger Date: Wed Dec 7 01:25:46 2011 +0400 ospf6d: fix compile warning from falling off end of main ospf6 main always calls ospf6_exit() which always calls exit. Use attributes to tell GCC that this is ok. commit d7a083844db63b3dda412c755ce69bf13f41961f Author: Stephen Hemminger Date: Wed Dec 7 00:09:56 2011 +0400 zebra: fix warnings in forward proc Check result of fgets(), and don't set variable that is never used. commit 04d5e24d7425a52f13abcb6d2a30aa6246d837e7 Author: Stephen Hemminger Date: Wed Dec 7 00:04:46 2011 +0400 bgpd: cleanup privs on termination When doing valgrind testing, the privledges from zprivs_init() need to be cleaned up on exit. commit 46901400a3401a4a6caa40435241b4546bb2a5c5 Author: Stephen Hemminger Date: Thu Dec 10 17:19:09 2009 +0000 vty_serv_sock_family unused If the vty_serv_sock_addrinfo is being used, then vty_serv_sock_family is unsed. Fix by adjusting ifdef/else/endif commit 075e12f57d6c0b115cd177c7b244d9810460e3ff Author: Stephen Hemminger Date: Tue Dec 6 23:54:17 2011 +0400 ospfd: remove unused code The code for nssa_range and other bits that were written but never used. commit f04a80a5d209dbb54f6fec5d0149b7c0e489d29e Author: Stephen Hemminger Date: Tue Dec 6 14:51:10 2011 +0400 bgpd: store nexthop info for redistributed IPV6 routes BGP was ignoring nexthop info for static and other redistributed routes for IPv6. Build extra attribute info to store the nexthop. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=6073 commit fb01f87f4f50744206222343a780721af19fe56c Author: Stephen Hemminger Date: Tue Dec 6 14:46:42 2011 +0400 ospfd: avoid redundant lookup in ospf_redistribute_withdraw The old algorithim looked up every node twice as it withdrew the entry. It looks up entry once in redistribute_withdraw, then looks it up again info_delete. Use result of first lookup to do the free directly. This may explain the slow performance observed in https://bugzilla.vyatta.com/show_bug.cgi?id=4421 commit b24b19f719fdd9c3d61a0c93552cd64d832d964c Author: Stephen Hemminger Date: Tue Dec 6 14:09:18 2011 +0400 lib: fix memory leak on connect() failure Change sockunion_log() to not use strdup(). This fixes a small memory leak that occurs on every failed connect(), and is simpler/cleaner. commit 6a2e0f36b103386e57dbe3a6ee4716e809111198 Author: Stephen Hemminger Date: Tue Dec 6 14:04:12 2011 +0400 lib: call filter delete hook before freeing access list The delete_hook was being run after calling access list delete function. This would cause ospf to dereference a NULL, in ospf_filter_update because 'access->name' was already freed. See also: https://bugzilla.vyatta.com/show_bug.cgi?id=7654 commit ce0af6ff5a4f200035ed4134da72a67f49a21dd6 Author: Oleg A. Arkhangelsky Date: Sat Dec 3 15:18:19 2011 +0400 bgpd: fix memory leak for extra attributes this fixes commit b881c7074bb698aeb1b099175b325734fc6e44d2 commit 1ffe5e794c3cd4a2ef84cac937d377de89b721f8 Author: Roderick Schertler Date: Wed Nov 16 15:03:14 2011 +0400 doc: rectify "match ip next-hop" in ripd (BZ#537) commit 2fbd6f5a62f654c59aec5e1707c859d6ed79c6b0 Author: David Lamparter Date: Tue Feb 2 20:20:35 2010 +0100 bgpd: remove unused function bgp_bind_address bgp_bind_address is replaced with sockunion_bind. commit 1727d2e2b939c8670d0f0e0d1a0e5eb0a8be2135 Author: David Lamparter Date: Tue Feb 2 20:18:23 2010 +0100 bgpd: fix update-source for IPv6 (BZ#548) if update-source was given as interface name, bgpd was unconditionally trying to bind to an IPv4 address from that interface. change function to find the best-matching (number of address bits) same-family address on the interface. commit 17e52061bacec93e84324b23382e5ec61e1f16d0 Author: David Lamparter Date: Tue Feb 2 20:16:35 2010 +0100 lib: prefix2sockunion, prefix_common_bits helper functions prefix2sockunion converts a struct prefix* to a union sockunion *; prefix_common_bits counts the number of common bits in the prefix's address part. commit a994c7b6bb0976e86756f39b89200d711a1d39a3 Author: Roderick Schertler Date: Wed Nov 16 15:03:14 2011 +0400 doc: rectify "match ip next-hop" in ripd (BZ#537) commit 9ebf400a1c21117ff40cb78f0b023bf1cb4e9f6c Author: Denis Ovsienko Date: Thu Oct 27 20:04:08 2011 +0400 bgpd: fix AS4_PATH attr flag check (BZ#676) AS_PATH is a well-known, transitive path attribute and cannot be flagged as "Partial". This is what commit 77a20b8af32c926176f8492a086d9e4ec670496b implemented, but it did not account, that bgp_attr_aspath() is also used to process AS4_PATH, which is an optional, transitive path attribute and as such may be flagged as "Partial". This change justfies the test condition. commit 0f572cde26208254f779933f0e8ec953ad2a3a8a Author: Denis Ovsienko Date: Wed Oct 26 19:34:30 2011 +0400 bgpd: fix 2 more cases of length error reporting * bgp_attr.c (bgp_attr_originator_id, bgp_attr_cluster_list): use bgp_notify_send_with_data() commit d3962ba7c75db6aeb926bf909e643cef12a843ef Author: Denis Ovsienko Date: Mon Oct 24 18:45:05 2011 +0400 lib: use prefix bit length macros commit f6247bf278861c41a5cb61639176d5ed1301e81e Author: Denis Ovsienko Date: Mon Oct 24 18:17:09 2011 +0400 ospfd: use IS_LSA_SELF() where appropriate commit 26f5e782ef43dbe4496d795d70c490b42da31c6a Author: Denis Ovsienko Date: Sun Oct 23 22:32:44 2011 +0400 bgpd: rewrite attr flag error logging * bgp_attr.c * attr_flag_str: new message list * bgp_attr_flags_diagnose(): new function, implements previously added error logging in a generic way * bgp_attr_origin(): use bgp_attr_flags_diagnose() * bgp_attr_nexthop(): ditto * bgp_attr_med(): ditto * bgp_attr_local_pref(): ditto * bgp_attr_atomic(): ditto * bgp_attr_originator_id(): ditto * bgp_attr_cluster_list(): ditto * bgp_mp_reach_parse(): ditto * bgp_mp_unreach_parse(): ditto commit 5c8d16fd853c29856e45709424701c93ef626f2f Author: Denis Ovsienko Date: Sat Oct 22 22:18:55 2011 +0400 ospfd: spelling/format fix commit 12da1a188a5e5bfdfecb98c48ecca48ed38e2d89 Author: Denis Ovsienko Date: Sat Oct 22 22:11:31 2011 +0400 bgpd: check AGGREGATOR attr flags (BZ#678) * bgp_attr.c * bgp_attr_aggregator(): check Optional/Transitive flag bits commit c6cb2d9151fc14f9c2b1b7618695874cc8d97286 Author: Denis Ovsienko Date: Tue Oct 18 22:02:52 2011 +0400 lib: optimize apply_mask_ipv6() commit ed7a62efea6d957b0c5f60ec52644bba062f6c29 Author: Denis Ovsienko Date: Tue Oct 18 18:33:53 2011 +0400 lib: optimize apply_mask_ipv4() commit 3062d2dab6e8bea9003d67a05d1e018a927d6f1d Author: Denis Ovsienko Date: Tue Oct 18 15:27:21 2011 +0400 bgpd: fix error message in bgp_attr_aspath() commit 49ff274c29eaa45ae85766e62dab32faea7f32b8 Author: Denis Ovsienko Date: Mon Oct 17 21:11:10 2011 +0400 lib: make masklen2ip6() safer and faster commit ba1a944aa7adffd9194ef0ad61649fe3e02b0f38 Author: Stephen Hemminger Date: Thu Dec 10 17:19:09 2009 +0000 vty_serv_sock_family unused If the vty_serv_sock_addrinfo is being used, then vty_serv_sock_family is unsed. Fix by adjusting ifdef/else/endif commit ed72156c9d4512217f5c80b8e20e4de024246502 Author: Denis Ovsienko Date: Fri Oct 14 21:59:58 2011 +0400 ospf6d: decode message type with LOOKUP() * ospf6_message.h * OSPF6_MESSAGE_TYPE_CANONICAL(): dismiss * OSPF6_MESSAGE_TYPE_NAME(): dismiss * ospf6_message.c * ospf6_message_type_str: rewrite as a message list, add max value * ospf6_packet_examin(): update to use LOOKUP() * ospf6_receive(): idem * ospf6_send(): idem commit 8fee927850e9011b3bf46f2a8a0d54521d00a807 Author: Denis Ovsienko Date: Fri Oct 14 20:59:43 2011 +0400 lib: address -Wunused-but-set-variable * if.c * if_dump(): 'node', 'c' * distribute.c * distribute_list_all(): 'dist' * distribute_list(): 'dist' * districute_list_prefix_all(): 'dist' * if_rmap.c * if_rmap(): 'if_rmap' * vty.c * vty_accept(): 'vty' commit bb6ef3e270f9ae53ac46461962500cf94ecdff08 Author: Denis Ovsienko Date: Fri Oct 14 20:56:19 2011 +0400 lib: spelling commit 7d3d2de4657a080275a705fbf3bd21a484cb3e4b Author: David Lamparter Date: Sun Oct 4 16:21:49 2009 +0200 lib: add sockopt helper for setting IPV6_V6ONLY and use it getaddrinfo returns a list of socket parameters for listening. it will contain both IPv4 and IPv6 listening sockets. unless we use IPV6_V6ONLY on the IPv6 ones, only the socket listed first will work. if the IPv4 one came first, the IPv6 one would get an "Address in use" error. this functionality was already present for bgpd and its listening sockets. as it is needed for vtys as well, make it a common helper. commit daca2cf463496e5844812ea13a4fafefafe4853f Author: David Lamparter Date: Wed Sep 16 01:52:42 2009 +0200 lib: put route_types.txt to real use this replaces most occurences of routing protocol lists by preprocessor defines from route_types.h. the latter is autogenerated from route_types.txt by a perl script (previously awk). adding a routing protocol now is mostly a matter of changing route_types.txt and log.c. Conflicts: lib/route_types.awk commit 6864a990771c66384a66cd6e7db443529460b0a6 Author: David Lamparter Date: Thu Aug 27 00:27:40 2009 +0200 zebra: fix redistribution of new protocols redistribute is currently limited to "known" protocols. there is no reason for this limitation, so, remove it. commit 87254a3f48874d7bbb127a118781d8ad1f017178 Author: David Lamparter Date: Thu Aug 27 00:28:28 2009 +0200 rib: default distance value for new protocols (v2) adding protocols and forgetting to update zebra_rib.c currently causes a beyond end of array access for the default distance value. fix by making 150 the default distance for unknown routing protocols. 150 is higher than all other IGPs but lower than iBGP (200) commit 3480674a41cba545a1f546e012939e286909b10c Author: David Lamparter Date: Wed Sep 16 02:11:00 2009 +0200 build: fixup autoconf for cross-compiling (to OpenWRT) MALLOC/REALLOC aren't used properly (no rpl_malloc), remove them while at it, infer some sane ipforwarding method from the OS value. (v2 on that, "==" is not a proper operator for standard "test") commit 337cdd69d9d5b5ef842d1be2e67126fdc6840181 Author: Tom Goff Date: Wed Nov 25 20:36:06 2009 +0000 zebra: set the interface link-layer socket address * kernel_socket.c: (ifm_read) The reorganization from commit 6fe70d1b35c189cb1e488b2c26551ba7baac6148 removed setting the interface link-layer socket address structure on routing socket platforms. This restores saving the link-layer information because it might be used elsewhere: rtm_write() when no gateway is given, if_dump_vty() and rtadv_send_packet(). commit d9ddd5731d31a7bc1f0a39b7e4b0944dec7a2bdc Author: David Lamparter Date: Tue Feb 2 20:20:35 2010 +0100 bgpd: remove unused function bgp_bind_address bgp_bind_address is replaced with sockunion_bind. commit 5d3c53b9995dd9cbfa08edfcb03a2dcb47b170f4 Author: David Lamparter Date: Tue Feb 2 20:18:23 2010 +0100 bgpd: fix update-source for IPv6 (BZ#548) if update-source was given as interface name, bgpd was unconditionally trying to bind to an IPv4 address from that interface. change function to find the best-matching (number of address bits) same-family address on the interface. commit 188506f4c618626e3da2c1e657100315f49664ee Author: David Lamparter Date: Tue Feb 2 20:16:35 2010 +0100 lib: prefix2sockunion, prefix_common_bits helper functions prefix2sockunion converts a struct prefix* to a union sockunion *; prefix_common_bits counts the number of common bits in the prefix's address part. commit 681b84e8f50a09ff871d9e6536e8d8afb115ce13 Author: Dmitrij Tejblum Date: Tue Jul 12 17:53:33 2011 +0400 ospf6d: check MTU with message header size in mind * ospf6_message.c: (ospf6_packet_max): new function, return maximum IPv6 payload on an interface; (ospf6_hello_send, ospf6_dbdesc_send, ospf6_dbdesc_send_newone, ospf6_lsreq_send, ospf6_lsupdate_send_neighbor, ospf6_lsupdate_send_interface, ospf6_lsack_send_neighbor, ospf6_lsack_send_interface): compare message size with the maximum payload instead of the MTU. commit 3cf1288bfd855e339fe2283c79a3ef3746e61737 Author: Dylan Hall Date: Thu Oct 27 15:28:17 2011 +0400 bgpd: fix "nexthop-local unchanged" (BZ#350) commit 8b1eb59bb954af49455a97dbabf65321001d0225 Author: Dylan Hall Date: Thu Oct 27 15:28:17 2011 +0400 bgpd: fix "nexthop-local unchanged" (BZ#350) commit 90d181bd1a7e03d41df3cb2f51530ab47d818caa Author: Chris Luke Date: Tue Oct 18 17:26:51 2011 +0400 bgpd: justify capabilities for TOS setting To set the TOS bits on TCP connections, platforms that restrict capabilities need the priv level to be raised before the sockopt is set, and this requires the ZCAP_NET_ADMIN priv. * bgp_main.c: update _caps_p to include ZCAP_NET_ADMIN * bgp_network.c * bgp_connect(): request ZPRIVS_RAISE/ZPRIVS_LOWER * bgp_listener(): request ZPRIVS_RAISE earlier commit 70e3ca2ccedca2cae58bd91c968714cad0f9d5d6 Author: Thomas Ries Date: Thu Oct 27 17:43:38 2011 +0400 ospfd: improve fix to CVE-2011-3326 (BZ#586) Make ospf_flood() propagate error returned by ospf_lsa_install() further to properly discard the malformed LSA, not just prevent the immediate crash. commit 5c88f19d5b166c6afa8a9b8501badb785afa553b Author: Chris Luke Date: Tue Oct 18 17:26:51 2011 +0400 bgpd: justify capabilities for TOS setting To set the TOS bits on TCP connections, platforms that restrict capabilities need the priv level to be raised before the sockopt is set, and this requires the ZCAP_NET_ADMIN priv. * bgp_main.c: update _caps_p to include ZCAP_NET_ADMIN * bgp_network.c * bgp_connect(): request ZPRIVS_RAISE/ZPRIVS_LOWER * bgp_listener(): request ZPRIVS_RAISE earlier commit 4de148e5d6f6f7885b2c0952a236a3bc3ec36250 Author: Thomas Ries Date: Thu Oct 27 17:43:38 2011 +0400 ospfd: improve fix to CVE-2011-3326 (BZ#586) Make ospf_flood() propagate error returned by ospf_lsa_install() further to properly discard the malformed LSA, not just prevent the immediate crash. commit 1758dbaa3b69bd6e95fb501c40f044f751557e76 Author: Sergey Y. Afonin Date: Thu Oct 27 17:01:11 2011 +0400 bgpd: revised fix to --dryrun (BZ#622) commit f85bab1482b0db4cfdf90a2fd50f42d6dae96b42 Author: Sergey Y. Afonin Date: Thu Oct 27 17:01:11 2011 +0400 bgpd: revised fix to --dryrun (BZ#622) commit 267551879e57a5c590f9e12b3a7d6985b28b3dac Author: Denis Ovsienko Date: Wed Oct 26 19:34:30 2011 +0400 bgpd: fix 2 more cases of length error reporting * bgp_attr.c (bgp_attr_originator_id, bgp_attr_cluster_list): provide required arguments to bgp_attr_malformed() commit b4cd2421518be7e18046e974e25b9bf4cf769bd2 Author: Denis Ovsienko Date: Sat Oct 22 22:32:26 2011 +0400 bgpd: check AGGREGATOR attr flags (BZ#678) * bgp_attr.c * bgp_attr_aggregator(): check Optional/Transitive flag bits commit bbb04bf3bb03be27fbf17b6b3ee903b168201cf0 Author: Denis Ovsienko Date: Tue Oct 18 14:20:04 2011 +0400 bgpd: fix more regressions in attr flag checks Commit 05a4936b713b9882171d0f7fb20b8439df23939e fixed some of the attributes involved, but not all. This commit should do it. * bgp_attr.c * bgp_attr_originator_id() * bgp_attr_cluster_list() * bgp_mp_reach_parse() * bgp_mp_unreach_parse() commit 7ebd47095b178e91c3c3ef514e0ddd0afe1a97a9 Author: Denis Ovsienko Date: Tue Oct 18 14:20:04 2011 +0400 bgpd: fix more regressions in attr flag checks Commit 05a4936b713b9882171d0f7fb20b8439df23939e fixed some of the attributes involved, but not all. This commit should do it. * bgp_attr.c * bgp_attr_originator_id() * bgp_attr_cluster_list() * bgp_mp_reach_parse() * bgp_mp_unreach_parse() commit abc384f85b622471ef5ba6c86acc540856da05cf Author: Denis Ovsienko Date: Tue Oct 18 13:55:07 2011 +0400 bgpd: use bgp_attr_malformed() Some of the recent attribute flags/length checks copied from QRE use bgp_notify_send_with_data() directly, but master branch assumes using bgp_attr_malformed(). * bgp_attr.c * bgp_attr_med() * bgp_attr_local_pref() * bgp_attr_atomic() * bgp_attr_originator_id() * bgp_attr_cluster_list() * bgp_mp_reach_parse() * bgp_mp_unreach_parse() commit 565b828dc00cafd477dd69ce15f0f551ece67710 Author: Denis Ovsienko Date: Mon Oct 10 21:08:33 2011 +0400 bgpd: add flag checks for MP_(UN)REACH_NLRI * bgp_attr.[ch] * bgp_mp_reach_parse(): add extra arguments and a uniform flag check block * bgp_mp_unreach_parse(): idem * bgp_attr_parse(): provide extra arguments * bgp_mp_attr_test.c * parse_test(): justify respective calls commit f8627ff1ef7642c8ee4758b1f046ef0d166dfbec Author: Denis Ovsienko Date: Mon Oct 10 16:52:20 2011 +0400 bgpd: fix spelling of CLUSTER_LIST commit 0b83044b91d7ea50824cfd803d77213b9ff38ed9 Author: Denis Ovsienko Date: Fri Sep 30 15:12:17 2011 +0400 bgpd: check CLUSTER_LIST attribute flags * bgp_attr.c * bgp_attr_cluster_list(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments commit d595b566bca1de8b026c469a31ae50f2aee11781 Author: Denis Ovsienko Date: Fri Sep 30 15:08:54 2011 +0400 bgpd: check ORIGINATOR_ID attribute flags * bgp_attr.c * bgp_attr_originator_id(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments commit 566b36ebf903fd873c974ba34c19097d8fb48ce4 Author: Dmitrij Tejblum Date: Tue Sep 27 19:27:17 2011 +0400 vtysh: [build] silence preprocessor errors in some cases * extract.pl.in: use configured CPPFLAGS in cpp invocation. commit ad61af67b548fa787d4c1da0024ba30f8c3b19c8 Author: Denis Ovsienko Date: Wed Oct 12 15:07:34 2011 +0400 lib: compile even without IPV6_TCLASS commit 6d0732c8abad7ace509d033a41814ea03a3a1b16 Author: Stephen Hemminger Date: Wed Sep 28 14:23:35 2011 +0400 IPv6 transport class suppport IPv6 supports the same concept of differentiated service for routing protocols as IPv4, but like too many things, the standards committee decided that having two names for the same thing wasn't good enough and introduced a third more generic term transport class. The socket option to set transport class works the same as IPv4, but the arguments are different. * lib/sockopt.[ch] * setsockopt_ipv6_tclass(): new function * bgpd/bgp_network.c * bgp_connect(): set socket option * bgp_listener(): set socket option * ospf6d/ospf6_network.c * ospf6_set_transport_class(): new function * ospf6_serv_sock(): set socket option * ripngd/ripngd.c * ripng_make_socket(): set socket option commit 89a7fd150d2408e4c6fe853a3461aa23a16d9111 Author: Denis Ovsienko Date: Tue Oct 11 15:17:45 2011 +0400 lib: fix endianness of masklen2ip() commit cc6647f230a55f1f4fd765a2012561047d9ae6d1 Author: Denis Ovsienko Date: Sat Oct 8 18:15:21 2011 +0400 lib: make masklen2ip() safer and faster commit 484af2c2e0efe660e00e27647a19f1837a7fa437 Author: Denis Ovsienko Date: Sat Oct 8 17:22:45 2011 +0400 ospf6d: make some old sizing checks assertions As long as ospf6_packet_examin() is now the single checkpoint for received packets, most of the old checks performed elsewhere can be converted into assert() constructs. Malformed input data at respective points can be attributed solely to a programming error, not a malformed packet. * ospf6_message.c * ospf6_hello_print() * ospf6_dbdesc_print() * ospf6_lsreq_print() * ospf6_lsupdate_print() * ospf6_lsack_print() * ospf6_hello_recv() * ospf6_dbdesc_recv_master() * ospf6_dbdesc_recv_slave() * ospf6_lsreq_recv() * ospf6_lsupdate_recv() * ospf6_lsupdate_recv() * ospf6_lsack_recv() * ospf6_receive() commit f17b65213712f324314c58866c4f4f8ed9c95dc7 Author: Paul Jakma Date: Mon Apr 11 16:33:20 2011 +0100 zebra: trivial warning fix * zebra_routemap.c: (route_set_src) get rid of the dummy family variable. commit 4b6a7b902065e038f415a8b728df1709db00425d Author: Paul Jakma Date: Wed Mar 30 14:30:20 2011 +0100 doc: Add dependency for quagga.pdf make target * doc/Makefile.am: pdf target needs to depend on all the input files. commit cc0b6c122f2d01d886e1ebde15cd2e7c5442c598 Author: John Kemp Date: Fri Mar 18 17:52:18 2011 +0300 bgpd: improve "monotonic" uptime correction Older versions of Quagga/Zebra would output a value in MRT table dump files for "uptime" aka "ORIGINATED" that was a WALL clock value. Given that uptime is now internally a bgp_clock MONOTONIC value, the output in the MRT files is showing up as monotonic. Note: time of MRT dump is still recorded correctly as a time() based value, so we haven't lost that value. Proposal is to correct the uptime output on the vty and in the MRT files to again display something more akin to WALL time. * bgp_dump.c: (bgp_dump_routes_func) add conditional correction * bgp_route.c: (route_vty_out_detail) make correction conditional, move variable declaration to beginning of the function commit 1809ec13def22bc6c2c30d9e8d37a74095bcfb64 Author: Stephen Hemminger Date: Sun Mar 13 01:14:08 2011 +0300 ripngd: copy debug statements fix from ripd Doesn't ripng needs same fix as ripd. commit 8422e8b91bc9a0f4b8381ac0474a4d5b914869a9 Author: Denis Ovsienko Date: Fri Oct 7 20:43:59 2011 +0400 doc: "[no] router zebra" does not belong to ospfd commit e48591a63220a90af9276a21877d80362bc6a408 Author: Denis Ovsienko Date: Mon Oct 3 14:08:01 2011 +0400 ospfd: justify ospf_default_originate_timer() The function is implemented in ospf_lsa.c, move its "extern" declaration to ospf_lsa.h for consistency. commit efb2c331e70eb3b913aeba3b62dfb54e68bd6de0 Author: Denis Ovsienko Date: Mon Oct 10 21:08:33 2011 +0400 bgpd: add flag checks for MP_(UN)REACH_NLRI * bgp_attr.[ch] * bgp_mp_reach_parse(): add extra arguments and a uniform flag check block * bgp_mp_unreach_parse(): idem * bgp_attr_parse(): provide extra arguments * bgp_mp_attr_test.c * parse_test(): justify respective calls commit 047d6a601f7842d445d478d51d90b006829df945 Author: Denis Ovsienko Date: Sat Oct 8 13:54:48 2011 +0400 bgpd: improve attr length error handling (BZ#679) * bgp_attr.c * bgp_attr_parse(): provide extra argument to bgp_attr_aggregator() * bgp_attr_local_pref(): use bgp_notify_send_with_data() * bgp_attr_atomic(): idem * bgp_attr_aggregator(): idem commit 452db84a79df073d30ecc0b3f7bdad4143020681 Author: Denis Ovsienko Date: Mon Oct 10 16:52:20 2011 +0400 bgpd: fix spelling of CLUSTER_LIST commit cadc4cf05da46c44a2fb596260d4ef70d7ed6011 Author: Denis Ovsienko Date: Fri Sep 30 15:12:17 2011 +0400 bgpd: check CLUSTER_LIST attribute flags * bgp_attr.c * bgp_attr_cluster_list(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments commit 5de1719994fd3677b361ad71ac8bd16cf9c31706 Author: Denis Ovsienko Date: Fri Sep 30 15:08:54 2011 +0400 bgpd: check ORIGINATOR_ID attribute flags * bgp_attr.c * bgp_attr_originator_id(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra arguments commit 566941f953b025598134109c5f9547dc4fea287e Author: Denis Ovsienko Date: Wed Oct 12 13:54:21 2011 +0400 bgpd: fix regression in improved attr flag checks Commit 2febf323411c1aed9d7694898f852ce2ef36a7e5 assumed every flag bit except optional/transitive/partial unset, which at times could not be true for "extended length" bit. * bgp_attr.c * bgp_attr_origin(): exclude BGP_ATTR_FLAG_EXTLEN from comparison * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem commit 395ec7f5ab794eb5205a7386b890ccb9b1313580 Author: Denis Ovsienko Date: Tue Sep 27 15:47:25 2011 +0400 bgpd: improve attr flags checks Do not check each of the Optional/Transitive/Partial attribute flag bits, when their only valid combination is known in advance, but still perform bit-deep error message logging. This change assumes unused (low-order) 4 bits of the flag octet cleared. * bgp_attr.c * bgp_attr_origin(): rewrite check * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem commit e531d4a662749fdd2a2f83f16e0b1cd252b23ea1 Author: Denis Ovsienko Date: Sat Sep 24 13:20:43 2011 +0400 bgpd: add missing "partial" flag checks (BZ#676) ORIGIN handling function used to have "partial" bit check and recent commits added it for NEXT_HOP, MULTI_EXIT_DISC and ATOMIC_AGGREGATE cases. This commit adds "partial" check for AS_PATH and LOCAL_PREF cases, which should leave attributes 1 through 6 inclusive completely covered with attribute flags checks. * bgp_attr.c * bgp_attr_origin(): use bit-by-bit checks for better diagnostics * bgp_attr_aspath(): add flag check * bgp_attr_local_pref(): idem commit 19e7654a293cd76854eb5cf98707826efb639326 Author: Denis Ovsienko Date: Tue Sep 27 15:35:39 2011 +0400 bgpd: ignore 4 bits of attribute flags byte commit 17801d1e8bf377ec8e4962dda0293de935629903 Author: Dmitrij Tejblum Date: Tue Sep 27 19:27:17 2011 +0400 vtysh: [build] silence preprocessor errors in some cases * extract.pl.in: use configured CPPFLAGS in cpp invocation. commit d14a71d7209dc642f83929e48b525631a1bb09cb Author: Denis Ovsienko Date: Wed Oct 12 15:07:34 2011 +0400 lib: compile even without IPV6_TCLASS commit d1e2faa40e17fe8f3db591021994d2f5e8b11335 Author: Stephen Hemminger Date: Wed Sep 28 14:23:35 2011 +0400 IPv6 transport class suppport IPv6 supports the same concept of differentiated service for routing protocols as IPv4, but like too many things, the standards committee decided that having two names for the same thing wasn't good enough and introduced a third more generic term transport class. The socket option to set transport class works the same as IPv4, but the arguments are different. * lib/sockopt.[ch] * setsockopt_ipv6_tclass(): new function * bgpd/bgp_network.c * bgp_connect(): set socket option * bgp_listener(): set socket option * ospf6d/ospf6_network.c * ospf6_set_transport_class(): new function * ospf6_serv_sock(): set socket option * ripngd/ripngd.c * ripng_make_socket(): set socket option commit a5b228b3792937c93b589938a2545b9311b7938e Author: Denis Ovsienko Date: Wed Oct 12 13:54:21 2011 +0400 bgpd: fix regression in improved attr flag checks Commit 2febf323411c1aed9d7694898f852ce2ef36a7e5 assumed every flag bit except optional/transitive/partial unset, which at times could not be true for "extended length" bit. * bgp_attr.c * bgp_attr_origin(): exclude BGP_ATTR_FLAG_EXTLEN from comparison * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem commit 21cc76941abc60b5b5ece0a71ace0b69d6f4572c Author: Peter Pentchev Date: Mon Sep 12 16:30:31 2011 +0400 bgpd: fix parsing of graceful restart cap. (#663) "While setting up a testbed, I ran across a little problem in the parsing of the "graceful restart" BGP capability that resulted in Quagga not actually activating it for the peer in question - when the peer sent a single AFI/SAFI block." * bgp_open.c * bgp_capability_restart(): actually process the last AFI/SAFI block commit a624cae2b210a0e81c80c473f86b73e2be169962 Author: Denis Ovsienko Date: Sat Oct 8 13:54:48 2011 +0400 bgpd: improve attr length error handling (BZ#679) * bgp_attr.c * bgp_attr_parse(): provide extra argument to bgp_attr_aggregator() * bgp_attr_local_pref(): use bgp_notify_send_with_data() * bgp_attr_atomic(): idem * bgp_attr_aggregator(): idem Conflicts: bgpd/bgp_attr.c commit b84b62dfb6ee9daf46c9e4c2c372b179f33be44c Author: Denis Ovsienko Date: Tue Sep 27 15:47:25 2011 +0400 bgpd: improve attr flags checks Do not check each of the Optional/Transitive/Partial attribute flag bits, when their only valid combination is known in advance, but still perform bit-deep error message logging. This change assumes unused (low-order) 4 bits of the flag octet cleared. * bgp_attr.c * bgp_attr_origin(): rewrite check * bgp_attr_nexthop(): idem * bgp_attr_med(): idem * bgp_attr_local_pref(): idem * bgp_attr_atomic(): idem Conflicts: bgpd/bgp_attr.c commit 2d42e68aa032ed2f11471aee444935918d35c8bb Author: Denis Ovsienko Date: Tue Sep 27 15:35:39 2011 +0400 bgpd: ignore 4 bits of attribute flags byte commit 214bcaa13e092d9fff8f233e62ba28ca7eefbc43 Author: Denis Ovsienko Date: Sat Sep 24 13:20:43 2011 +0400 bgpd: add missing "partial" flag checks (BZ#676) ORIGIN handling function used to have "partial" bit check and recent commits added it for NEXT_HOP, MULTI_EXIT_DISC and ATOMIC_AGGREGATE cases. This commit adds "partial" check for AS_PATH and LOCAL_PREF cases, which should leave attributes 1 through 6 inclusive completely covered with attribute flags checks. * bgp_attr.c * bgp_attr_origin(): use bit-by-bit checks for better diagnostics * bgp_attr_aspath(): add flag check * bgp_attr_local_pref(): idem Conflicts: bgpd/bgp_attr.c commit bc3443ebf032b5fcc9e0ccb94641e4e899cd17d8 Author: Denis Ovsienko Date: Thu Sep 22 12:48:14 2011 +0400 bgpd: improve NEXT_HOP attribute checks (BZ#680) * lib/prefix.h * IPV4_CLASS_DE(): new helper macro * bgp_attr.c * bgp_attr_nexthop(): add check for "partial" bit, refresh flag error reporting, explain meaning of RFC4271 section 6.3 and implement it Conflicts: bgpd/bgp_attr.c commit 0a28130d35bbba47faf47bf9451ba0eb195fcbb7 Author: Denis Ovsienko Date: Sun Jul 17 19:33:21 2011 +0400 bgpd: rename SAFI 3 according to RFC4760 - SAFI value 3 is reserved. It was assigned by RFC 2858 for a use that was never fully implemented, so it is deprecated by this document. * zebra.h: rename macro * bgp_fsm.c: (bgp_graceful_restart_timer_expire, bgp_graceful_stale_timer_expire, bgp_stop, bgp_establish): update * bgpd.c: (peer_nsf_stop): update * bgp_open.c: (bgp_capability_vty_out): SAFI 3 isn't a recognized case any more commit 42e6d745d105018a9469dabad65bd4cf942dcf3c Author: Denis Ovsienko Date: Thu Jul 14 12:36:19 2011 +0400 bgpd: more SAFI fixes (with resolved conflict in bgpd/bgp_packet.c) Two macros resolving to the same integer constant broke a case block and a more thorough merge of BGP_SAFI_VPNV4 and BGP_SAFI_VPNV6 was performed. * bgpd.h: MPLS-labeled VPN SAFI is AFI-independent, switch to single * macro * bgp_capability_test.c: update test data * bgp_mp_attr_test.c: idem * bgp_route.c: (bgp_maximum_prefix_overflow, bgp_table_stats_vty) update macro and check conditions (where appropriate) * bgp_packet.c: (bgp_route_refresh_send, bgp_capability_send, bgp_update_receive, bgp_route_refresh_receive): idem * bgp_open.c: (bgp_capability_vty_out, bgp_afi_safi_valid_indices, bgp_open_capability_orf, bgp_open_capability): idem * bgp_attr.c: (bgp_mp_reach_parse, bgp_packet_attribute, bgp_packet_withdraw): idem commit beb1ca03bfe707d6d1fcad21fcbaa63af49c82f8 Author: Denis Ovsienko Date: Wed Jul 13 16:53:13 2011 +0400 bgpd: fix SAFI for for MPLS labeled VPN-IPv6 * bgpd.h: change value of BGP_SAFI_VPNV6 to 128 (RFC4659, BZ#659) * bgp_route.c: (bgp_table_stats_vty) fix length argument to strncmp() commit 792b6fa2c40f820df07caa80fbc6ed9c4191ef9b Author: Denis Ovsienko Date: Thu Sep 29 16:46:49 2011 +0400 version RE-0.99.17.5 commit 992d4d1ca90025ccac2456643bc2c8cb6790350b Author: YAMAMOTO Shigeru Date: Wed Sep 28 21:00:14 2011 +0400 ospfd: fix regression in recent commit commit '717750433839762d23a5f8d88fe0b4d57c8d490a' causes SEGV error, when 'oi = ospf_if_lookup_recv_if (ospf, iph->ip_src, ifp);' returns NULL. * ospf_packet.c * ospf_read(): change a place of calling 'ospf_verify_header()' commit 2bb2664e2957c587d8ad2d3d1d26de981983406e Author: Denis Ovsienko Date: Mon Sep 26 18:37:06 2011 +0400 version RE-0.99.17.4 commit 552563a1c443ec876edd92bf79f29ff3afe2c01e Author: Denis Ovsienko Date: Mon Sep 26 13:18:51 2011 +0400 ospf6d: CVE-2011-3323 (fortify packet reception) This vulnerability (CERT-FI #514840) was reported by CROSS project. ospf6d processes IPv6 prefix structures in incoming packets without verifying that the declared prefix length is valid. This leads to a crash caused by out of bounds memory access. * ospf6_abr.h: new macros for size/alignment validation * ospf6_asbr.h: idem * ospf6_intra.h: idem * ospf6_lsa.h: idem * ospf6_message.h: idem * ospf6_proto.h: idem * ospf6_message.c * ospf6_packet_minlen: helper array for ospf6_packet_examin() * ospf6_lsa_minlen: helper array for ospf6_lsa_examin() * ospf6_hello_recv(): do not call ospf6_header_examin(), let upper layer verify the input data * ospf6_dbdesc_recv(): idem * ospf6_lsreq_recv(): idem * ospf6_lsupdate_recv(): idem * ospf6_lsack_recv(): idem * ospf6_prefixes_examin(): new function, implements A.4.1 * ospf6_lsa_examin(): new function, implements A.4 * ospf6_lsaseq_examin(): new function, an interface to above * ospf6_packet_examin(): new function, implements A.3 * ospf6_rxpacket_examin(): new function, replaces ospf6_header_examin() * ospf6_header_examin(): sayonara * ospf6_receive(): perform passive interface check earliest possible, employ ospf6_rxpacket_examin() commit 308687b7d73c5cacf927a3a33efbfaea627ccc09 Author: Denis Ovsienko Date: Mon Sep 26 13:18:36 2011 +0400 ospf6d: CVE-2011-3324 (DD LSA assertion) This vulnerability (CERT-FI #514839) was reported by CROSS project. When Database Description LSA header list contains trailing zero octets, ospf6d tries to process this data as an LSA header. This triggers an assertion in the code and ospf6d shuts down. * ospf6_lsa.c * ospf6_lsa_is_changed(): handle header-only argument(s) appropriately, do not treat LSA length underrun as a fatal error. commit 1f54cef38dab072f1054c6cfedd9ac32af14a120 Author: Denis Ovsienko Date: Mon Sep 26 13:18:02 2011 +0400 ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv) This vulnerability (CERT-FI #514838) was reported by CROSS project. The error is reproducible only when ospfd debugging is enabled: * debug ospf packet all * debug ospf zebra When incoming packet header type field is set to 0x0a, ospfd will crash. * ospf_packet.c * ospf_verify_header(): add type field check * ospf_read(): perform input checks early commit 3d3380d4fda43924171bc0866746c85634952c99 Author: Denis Ovsienko Date: Mon Sep 26 13:17:52 2011 +0400 ospfd: CVE-2011-3325 part 1 (OSPF header underrun) This vulnerability (CERT-FI #514838) was reported by CROSS project. When only 14 first bytes of a Hello packet is delivered, ospfd crashes. * ospf_packet.c * ospf_read(): add size check commit af143a26ef96ba9be7b9c0b151b7605e1c2c74cd Author: CROSS Date: Mon Sep 26 13:17:21 2011 +0400 ospfd: CVE-2011-3326 (uknown LSA type segfault) This vulnerability (CERT-FI #514837) was reported by CROSS project. They have also suggested a fix to the problem, which was found acceptable. Quagga ospfd does not seem to handle unknown LSA types in a Link State Update message correctly. If LSA type is something else than one supported by Quagga, the default handling of unknown types leads to an error. * ospf_flood.c * ospf_flood(): check return value of ospf_lsa_install() commit a1afbc6e1d56b06409de5e8d7d984d565817fd96 Author: CROSS Date: Mon Sep 26 13:17:05 2011 +0400 bgpd: CVE-2011-3327 (ext. comm. buffer overflow) This vulnerability (CERT-FI #513254) was reported by CROSS project. They have also suggested a fix to the problem, which was found acceptable. The problem occurs when bgpd receives an UPDATE message containing 255 unknown AS_PATH attributes in Path Attribute Extended Communities. This causes a buffer overlow in bgpd. * bgp_ecommunity.c * ecommunity_ecom2str(): perform size check earlier commit 3eca6f099d5a3aac0b66dfbf98fd8be84ea426b7 Author: Denis Ovsienko Date: Thu Sep 22 12:48:14 2011 +0400 bgpd: improve NEXT_HOP attribute checks (BZ#680) * lib/prefix.h * IPV4_CLASS_DE(): new helper macro * bgp_attr.c * bgp_attr_nexthop(): add check for "partial" bit, refresh flag error reporting, explain meaning of RFC4271 section 6.3 and implement it commit c347846e4f917339fd7b4c122a343f93ef621c40 Author: Dmitrij Tejblum Date: Wed Sep 21 23:13:22 2011 +0400 bgpd: don't be confused by "unspecific" subcode in the NOTIFY message. * bgp_debug.c (bgp_notify_open_msg, bgp_notify_update_msg, bgp_notify_cease_msg, bgp_notify_capability_msg): add messages for "unspecific" subcode. commit 614da2bf57d7df965d41869d1aa8321210d6560e Author: Dmitrij Tejblum Date: Wed Sep 21 17:41:41 2011 +0400 lib: provide more information in case of failed LOOKUP. * log.[ch] * mes_lookup: add a parameter with the name of the message list, print the name in case of failure. * LOOKUP macro: pass the name of the message list. commit ca22cc4cc397dac8f3bf57eca516360085d44214 Author: Denis Ovsienko Date: Tue Sep 20 14:43:50 2011 +0400 bgpd: check ATOMIC_AGGREGATE attr flags (BZ#678) * bgp_attr.c * bgp_attr_atomic(): accept extra argument, add checks for "optional", "transitive" and "partial" bits, log each error condition independently * bgp_attr_parse(): provide extra argument commit 7d25f1883f9a391ad16ec57c06ae71df616b00d8 Author: Denis Ovsienko Date: Tue Sep 20 10:54:25 2011 +0400 bgpd: check MULTI_EXIT_DISC attr flags (BZ#677) * bgp_attr.c * bgp_attr_med(): add checks for "optional", "transitive" and "partial" bits, log each error condition independently commit d0511bd9b09a6952f18bf3a926de759638a5cda7 Author: Denis Ovsienko Date: Mon Sep 19 16:30:47 2011 +0400 bgpd: check LOCAL_PREF attribute flags (BZ#674) * bgp_attr.c * bgp_attr_local_pref(): accept extra argument, add checks for "optional" and "transitive" bits, log each error condition independently * bgp_attr_parse(): provide extra argument commit dda8187956966b2cc977855603a5beeeada3cc76 Author: Dmitrij Tejblum Date: Thu Sep 15 20:00:33 2011 +0400 configure: test for glibc backtrace even without glibc. Other platform may have compatible facilities. commit 254f118d8671926f946a0b7221f89794cf4bf732 Author: Denis Ovsienko Date: Thu Sep 15 15:40:47 2011 +0400 ospfd: remove unused macro commit e7da9d51dff9d244711758d3019381447a6d5657 Author: Roman Hoog Antink Date: Thu Sep 15 11:47:00 2011 +0400 doc: fix typo commit 4e60f63ccc7a46b1b8500fce657b0164d881a585 Author: Fritz Reichmann Date: Wed Sep 14 20:46:57 2011 +0400 isisd: raise hello rate for DIS (BZ#539) * isis_pdu.c: Divide hello interval by three, depending if we are DIS or not. commit d0d29979d05ddc532475b595b32041412de523c7 Author: Fritz Reichmann Date: Wed Sep 14 19:31:51 2011 +0400 isisd: fix crash on "no router isis" (BZ#536) The crash is due to threads accessing data that gets destroyed during the removal of the configuration. * isis_circuit.c: Destroy adjacencies to stop adjacency expiry thread. Stop PSNP threads. * isisd.c: Change state of circuit back to INIT and reassign the circuit structure to isis->init_circ_list rather than destroying the circuit data structure. Stop SPF threads. Stop LSP generation threads. * isisd.h: Add pointers to LSP threads into area structure in order to stop them in isisd.c * isis_lsp.c: Store pointer to LSP thread in area structure. * isis_pdu.c: Stop PDU generation for a circuit with a removed area. * isis_pfpacket.c: Stop processing received PDUs for a circuit with a removed area. commit 158dd4d00ecb0af0d1a77fdc7d4844fc88a0f10f Author: Tom Goff Date: Wed Nov 10 13:02:38 2010 -0800 ospf6d: Fix memory allocation issues in SPF * ospf6_area.c: Call ospf6_spf_table_finish() before deleting the spf table. This ensures that the associated ospf6_vertex structures are also freed. * ospf6_spf.c: Only allocate a priority queue when a spf calculation is actually performed. commit f7c91fc330b802e95e23d52b498ae61b0e8669a9 Author: Tom Goff Date: Wed Nov 10 13:02:11 2010 -0800 ospf6d: Extend the "[no] debug ospf6 route" vty commands * ospf6_route.c ([no_]debug_ospf6_route) Include memory as a debug option. This allows ospf6 route memory debugging to be enabled or disabled interactively or from a config file. commit a7c21ecd6df936b2f6614956ef9167b5fcc165c8 Author: Peter Szilagyi Date: Tue Sep 13 17:37:06 2011 +0400 isisd: include hash.h, not hash.c commit 3f0d3a1f9c7b7f751473d9293ba2272a28e2a8f2 Author: Stephen Hemminger Date: Tue Sep 13 17:15:51 2011 +0400 configure: dismiss libutil.h Recent versions of libc on Linux (Debian Testing) create lots of compile warnings about direct usage of libutil.h commit b38639ca49e2d0348bdc774f987a8f2f9d2ede74 Author: Alexandre Chappuis Date: Tue Sep 13 16:33:45 2011 +0400 doc: add missing word * ospfd.texi: Adjust meaning of the rfc1583compatibility option in order to match the RFC specification and the actual source code. commit 4fe20b3f7d13252348e7efaedbaa8f10456cfd52 Author: Jon Andersson Date: Tue Sep 13 15:47:14 2011 +0400 ospf6d: add lost lines to area config block * ospf6_area.c * ospf6_area_config_write(): write filter-list, import-list and export-list lines commit 74ffab30c360e2a603247f574577b3a8a74db4b2 Author: Peter Pentchev Date: Mon Sep 12 16:30:31 2011 +0400 bgpd: fix parsing of graceful restart cap. (#663) "While setting up a testbed, I ran across a little problem in the parsing of the "graceful restart" BGP capability that resulted in Quagga not actually activating it for the peer in question - when the peer sent a single AFI/SAFI block." * bgp_open.c * bgp_capability_restart(): actually process the last AFI/SAFI block commit c8049c165cdab08cb8024881376080b58ebc9eae Author: Christian Hammers Date: Mon Sep 12 14:23:05 2011 +0400 ospf6d: fix crash on filter-list handling (BZ#530) This essentially merges the fix available from Debian build of Quagga. * ospf6_area.c * area_filter_list(): use correct argv indices * no_area_filter_list(): idem commit 2e35e96a11ac7bdf82ad68056f94135dc41a0995 Author: heasley Date: Mon Sep 12 13:27:52 2011 +0400 bgpd: add useful notification logs (BZ#616) * bgp_packet.c * bgp_notify_send_with_data(): add calls to zlog_info() commit 99dc8691caa8bd1eaf4d5784bdb72a10966f2007 Author: Alexandre Chappuis Date: Sun Sep 11 16:54:11 2011 +0400 doc: BGP route-flap dampening commit 257c0eb350f314014ff1f8a993f3cf2456964cda Author: Dmitry Popov Date: Sun Sep 11 13:48:25 2011 +0400 zebra: fix loss of metric for Linux routes * rt_netlink.c * netlink_route_change(): fetch metric information like netlink_routing_table() does and pass it further commit e00d4e2e3dd20d567d670cae1c33618910c639fa Author: Denis Ovsienko Date: Sat Sep 10 23:29:19 2011 +0400 ospfd: spelling commit 6787978cc8c15b16fff3e6d6e09e02518dc045f2 Author: Denis Ovsienko Date: Sat Sep 10 21:50:53 2011 +0400 bgpd: spelling commit 71008de7c8d47e5163d103b0b509d4a899044014 Author: Denis Ovsienko Date: Sat Sep 10 16:53:30 2011 +0400 bgpd: spelling commit 4f151e5cc6ac6cfb1042dc3e5a1139a9f3138d91 Author: Denis Ovsienko Date: Sat Sep 10 16:40:23 2011 +0400 ospfd: use existing macro for consistency commit 2f7d5fb38a284a00f990f943fbd3fbd8961ef52e Author: Denis Ovsienko Date: Wed Sep 7 17:44:10 2011 +0400 version RE-0.99.17.3 commit 6caee4c9cdcf72e603b1ebd70f209ccdc75f0b95 Author: Denis Ovsienko Date: Wed Sep 7 17:40:38 2011 +0400 ospfd: revert recent PIE change to fix amd64 build This reverts commit 68575f4babf4d6fc302c366898a1047f13629214. commit c66caa83f96cd11c95c05b40da9ed8064e236005 Author: Denis Ovsienko Date: Wed Sep 7 15:40:06 2011 +0400 version RE-0.99.17.2 commit 68575f4babf4d6fc302c366898a1047f13629214 Author: Dmitrij Tejblum Date: Sat Sep 3 14:35:24 2011 +0400 build: build ospfd as Position-Independed Executable (if appropriate) Since 46bc0e432e75, all the binaries are built as Position-Independed Executables (if available and enabled). ospfd was missed for some unknown reason. commit 84f6c0d6cecd039b5dc529b6c5eba136840a4010 Author: Denis Ovsienko Date: Sun Aug 28 22:38:45 2011 +0400 ospfd: address more trivial compiler warnings * ospf_ase.c * ospf_ase_complete_direct_routes(): dismiss unused variable * ospf_ase_calculate_route(): put assignments into parentheses commit 695421486d651816a7082447adf2fec9fea50930 Author: Denis Ovsienko Date: Sun Aug 28 22:29:52 2011 +0400 zebra: add missing includes commit 330835409fb82522082eba4d4819467e5ab2de84 Author: Denis Ovsienko Date: Sat Aug 27 22:19:34 2011 +0400 ospf6d: address more trivial compiler warnings * ospf6_main.c: include required headers * ospf6_asbr.h: idem * ospf6_spf.c * ospf6_spf_install(): remove unused variables commit 68aa0c58717b3f2648533b54fb4ec689fd2d7c5c Author: Denis Ovsienko Date: Tue Aug 23 11:36:27 2011 +0400 ospfd: sizing macros cleanup * ospf_spf.c * ROUTER_LSA_TOS_SIZE: prepend OSPF_ and move to ospf_lsa.h * ROUTER_LSA_MIN_SIZE: replace with existing OSPF_ROUTER_LSA_LINK_SIZE commit d6af701250915fdc7449500d9191f4eb2e6cfa4d Author: Dmitrij Tejblum Date: Mon Aug 22 11:39:35 2011 +0400 lib: use "protocol-independed API" from RFC3678, if that is available (This commit is based on the patch from BZ#420, and should fix that bug.) * configure.ac: detect availability of that API * sockopt.c (setsockopt_ipv4_multicast): use it for join/leave IPv4 multicast groups commit 96a0a39261b5a848228f096a1a1836fa12ed3e69 Author: Dmitrij Tejblum Date: Fri Aug 19 23:00:30 2011 +0400 lib: futher simplification of setsockopt_ipv4_multicast() * sockopt.c (setsockopt_ipv4_multicast): check for wrong optname with assert(), rather than return an error. commit b62987450e4d4e0dd18a2766aff220d42174042b Author: Denis Ovsienko Date: Sat Aug 20 23:12:00 2011 +0400 ospf6d: add missing include Two extern declarations in ospf6_abr.h are based on struct ospf6_route, which may not be available at the time ospf6_abr.h is included. This may lead to warnings after including ospf6_abr.h just for the structures defined in it. commit eb223062582ba463856119efa30ae1989c2a901d Author: Denis Ovsienko Date: Sat Aug 20 22:45:58 2011 +0400 ospf6d: ospf6_lsa_cmd_init() does not exist commit a44ed99c57f340a75e94e13edfb047e3f5a49539 Author: Denis Ovsienko Date: Sat Aug 20 20:58:15 2011 +0400 ospf6d: move named constants to ospf6d.h commit 87d29037b3f390cfb9d4e9e2aef4f0b49f98d557 Author: Dmitrij Tejblum Date: Fri Aug 19 22:25:23 2011 +0400 lib: fix omission in the previous commit to lib/sockopt.c * sockopt.c (setsockopt_ipv4_multicast_if): fix missed line in the previous commit. commit 9504a6ea39a68523733a8abb147da62deae061a9 Author: Denis Ovsienko Date: Fri Aug 19 22:24:27 2011 +0400 ospf6d: justify some ABR debug code * ospf6_abr.c * ospf6_abr_examin_summary(): only fill "buf" when it is used commit bf510e9bc06b55ae9d9c1d6ed67152b94e80977e Author: Dmitrij Tejblum Date: Thu Aug 18 20:22:17 2011 +0400 lib: simplify interface of setsockopt_multicast_ipv4(). * sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all non-ancient OSes can use it anyway), and if_addr parameter (the address of the interface) is now gone. (setsockopt_ipv4_multicast_if): IP_MULTICAST_IF processing moved to this new function * ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters, ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast), rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave, rip_interface_new): adapt to the new interface commit 9fa6be78ecbbda17be20b8d2bc4fdde915e33d7e Author: Denis Ovsienko Date: Fri Aug 19 16:27:16 2011 +0400 ospf6d: spelling commit 22aefb2270a0cd3b1ba0f309e136e0250bd0332e Author: Denis Ovsienko Date: Tue Aug 9 14:42:58 2011 +0400 bgpd: improve "show ip bgp scan detail" * bgp_nexthop.c (show_ip_bgp_scan_tables): access proper structure field in AF_INET6 case, handle ifindex NH type properly commit 15b1d9d0b0f54b9afbfdb784d535b3761d5efde7 Author: Denis Ovsienko Date: Mon Aug 8 19:36:44 2011 +0400 bgpd: dismiss some zlookup checks bgp_nexthop_onlink(): zlookup is not used here at all bgp_nexthop_lookup_ipv6(): rely on the detection performed by "query" function (this also changes the fallback value to 0), reorder if-block bgp_nexthop_lookup(): idem commit 5990281d4e91e40e0e3cc9149e73c887a7119415 Author: Denis Ovsienko Date: Fri Aug 5 21:47:08 2011 +0400 bgpd: add "show ip bgp scan detail" command * bgp_nexthop.c: (show_ip_bgp_scan) transform into show_ip_bgp_scan_tables(), which uses inet_ntop() and can dump nexthops on request; (show_ip_bgp_scan_detail_cmd) new function commit 5c98c5a7b1d3d71ff40b477b246b859cd22ddeed Author: Denis Ovsienko Date: Fri Aug 5 18:52:52 2011 +0400 bgpd: touch nexthop handling code bgp_nexthop_lookup_ipv6(): declare variables where they are actually used, drop no-op initialization (the field is already 0) bgp_nexthop_lookup(): ditto bgp_nexthop_check_ebgp(): rename to bgp_nexthop_onlink() bgp_nexthop_cache_changed(): rename to bgp_nexthop_cache_different() commit 0ddff5764f736c0a6d0d07b28bf98970624f263b Author: Stephen Hemminger Date: Thu Aug 5 10:26:30 2010 -0700 bgpd: use XCALLOC to allocate bgpd damp array * bgpd: (bgp_damp_parameter_set) The BGP reuse_index is not initialized properly. This would cause sporadic crash when disabling dampening. Use XCALLOC correctly and the right size array is initialized and no memset is needed. commit aad356a49d6b00590b21751ea560c54f321c73c9 Author: Christian Hammers Date: Wed Mar 23 13:07:55 2011 +0300 lib: fix more format warnings (#637) The following patch was also neccessary to compile. * command.c: (config_logmsg_cmd) use "%s" format spec * if.c: (connected_log) ditto commit 1740f9e5906a7cb264e7741dd57a91654cb05dd0 Author: Alexandre Chappuis Date: Tue Aug 2 17:37:39 2011 +0400 ospfd: remove useless RFC1583 check * ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set. Therefore, the check that the flag is set doesn't make sense at all and it can consequently be removed without doing any harm. Signed-off-by: Alexandre Chappuis Signed-off-by: Roman Hoog Antink commit c69f91be67896e7e68adb7da4b5b9c5f6013f1a2 Author: Denis Ovsienko Date: Mon Aug 1 21:59:04 2011 +0400 lib: remove unused variable * sockopt.c (getsockopt_ifindex): "ifindex" was never used commit cbfbf2f07bd90f48e268907a597652af6d2e019d Author: Denis Ovsienko Date: Mon Aug 1 16:52:03 2011 +0400 delete CVS keywords commit 0e8257d21e814c46aca485d58bcfa73e06354cad Author: Tom Goff Date: Wed Nov 10 13:03:23 2010 -0800 ospf6d: Remove obsolete code * ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers to a nonexistent function and structure member. commit cd3355b83202bc109045ba1e90b6725610aa256d Author: Tom Goff Date: Wed Nov 10 13:01:17 2010 -0800 lib: zlog should clean up its memory * log.c: (closezlog) Also free the dynamically allocated filename when a log is closed. commit f4ac0fee73100c6268365df31096a64443bfb93b Author: Wataru Tanitsu Date: Fri Sep 10 09:47:56 2010 -0700 bgpd: Fix display of unsigned attributes * bgp_route.c: (route_vty_out*) The local prefix, metric and weight values are all stored as uint32_t. Change the format to %u so that large values are not displayed as negative integers. commit 999a305c89b12b8d059f118bf01556b9a6fd62b3 Author: Paul Jakma Date: Mon Dec 6 12:21:52 2010 +0000 ospfd: Lower level of some common messages from info to debug * ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be debug log level, not info, to avoid spamming 'terminal monitor' commit e9e42170c63efcdb14b9389f481f2fa8fcb4092a Author: Paul Jakma Date: Sun Jan 24 21:41:02 2010 +0000 lib: prefix.c nano-optimisation * lib/prefix.c: (prefix_match) nano-optimisation, let it return early without copying pointers. commit 01d7ff0a2166a422c56bd26f04fc22832a9e690b Author: Josh Bailey Date: Wed Jul 20 20:52:06 2011 -0700 bgpd: We try to skip out of updating the multipath aggregate if there are no changes in the multipath set or attributes, but failed to check for just a bestpath change. The result is there is no attribute on the new bestpath and we hit the assert. Added the bestpath check and rearranged the code to only check attributes when there is no bestpath or multipath change, so we only scan the for attribute changes when necessary. * bgpd/bgp_mpath.c * bgp_info_mpath_aggregate_update(): Added check for bestpath change before skipping the aggregate generation. Skip the attribute check if either the multipath set or bestpath has changed. commit 78d92e1721538ec41feb2b1c34712675b830087b Author: Josh Bailey Date: Wed Jul 20 20:51:07 2011 -0700 bgpd: Fix a crash caused by mistakenly dequeueing the bestpath on the multipath list. This causes the multipath list to get truncated but the multipath count still reflects what it was before truncation. When we install the route to zebra we fail to fill the nexthop array with the number of nexthop pointers indicated by the multipath count and this leads to a NULL pointer crash in stream_put_in_addr(). Changes: * bgpd/bgp_mpath.c * bgp_info_mpath_update(): If new_mpath is the bestpath we should just move to the next mp_list node. Move dequeue of new_mpath and the code that updates next_mpath to inside the check that new_mpath is not the bestpath. commit 0b597ef00ec7c7eebd836e2b1d5a266efcd60005 Author: Josh Bailey Date: Wed Jul 20 20:49:11 2011 -0700 bgpd: When advertising a multipath route, the attribute set to be advertised is based on the bestpath attribute set, but the following attributes are aggregated from the attribute sets of the multipath constituents: - AS_PATH - ORIGIN - COMMUNITIES - EXTENDED COMMUNITIES In addition the route is advertised with the NEXT_HOP set to the router's interface IP address, instead of the NEXT_HOP of the best path. This is to ensure that traffic will go to this router so it can be fanned out via the multipath route. * bgpd/ecommunity.c * ecommunity_uniq_sort(): Make this function externally accessible * bgpd/ecommunity.h * Add external declaration for ecommunity_uniq_sort() * bgpd/bgp_mpath.c * bgp_info_nexthop_cmp(): Replace calls to bgp_attr_extra_get() to avoid unwanted memory allocation * bgp_info_mpath_free(): Free aggregate attribute for multipath * bgp_info_mpath_attr(): Lookup aggregate attribute of a multipath route * bgp_info_mpath_attr_set(): Set aggregate attribute of a multipath route * bgp_info_mpath_aggregate_update(): Update the aggregate attribute of a multipath route * bgpd/bgp_mpath.h * bgp_info_mpath: Add pointer to hold aggregate attribute of a multipath * Add external declarations for new functions * bgpd/bgp_route.c * bgp_announce_check(): Use aggregate attribute when announcing multipath route * bgp_announce_check_rsclient(): Use aggregate attribute when announcing multipath route * bgp_best_selection(): After updating multipath set, update the multipath aggregate attribute commit 6918e74b97fd40f947ebd2eded9ab24b8569d3b8 Author: Josh Bailey Date: Wed Jul 20 20:48:20 2011 -0700 bgpd: For deterministic MED build a multipath set for each peer AS as the first stage of the best path calculation. The second stage then selects a winner from each peer AS's best path. In the second stage we clear multipath set of the non-selected best paths via bgp_mp_dmed_deselect(). Since the multipath set is already marked up for the winning path, we don't call bgp_info_mpath_update() after the second stage calculation. * bgpd/bgp_mpath.c * bgp_mp_dmed_deselect(): New function to cleanup the multipath markup if a DMED selected path loses in stage 2 of the best path calculation * bgpd/bgp_mpath.h * Add external declaration of bgp_mp_dmed_deselect() * bgpd/bgp_route.c * bgp_best_selection(): If multipath is enabled, build up the mp_list for the current peer AS, and do the RIB markup the best path from that AS. In the second stage, clear the RIB markup for the DMED selected path if it is not selected as best. Only call bgp_info_mpath_update() in the second stage when not doing deterministic MED. commit 8196f13d2ab7f3b09150c00328228f90391acb7c Author: Josh Bailey Date: Wed Jul 20 20:47:07 2011 -0700 bgpd: Modify the BGP to zebra route announcement to support multipath routes. Use a growable buffer (bgp_nexthop_buf) to collect nexthops that are included in the announcement. Use the BGP_INFO_MULTIPATH_CHG flag to trigger zebra announcement so zebra will be updated if the multipath set changes. Display all multipath nexthops in 'debug bgp zebra' output. * bgpd/bgp_main.c * bgp_exit(): Free bgp_nexthop_buf when exiting * bgpd/bgp_route.c * bgp_process_rsclient(): Clear BGP_INFO_MULTIPATH_CHG after processing * bgp_process_main(): Check BGP_INFO_MULTIPATH_CHG to trigger zebra announcement and clear aftr processing * bgpd/bgp_zebra.c * bgp_nexthop_buf: Growable buffer used to collect nexthops for zebra announcement * bgp_zebra_announce(): Grow bgp_nexthop_buf if needed. Include multipath count in zebra announcement and add all nexthops to bgp_nexthop_buf. Pass bgp_nexthop_buf data to zebra announcement. Added nexthops to debug output. * bgp_zebra_init(): Initialize bgp_nexthop_buf at startup * bgpd/bgp_zebra.h * BGP_NEXTHOP_BUF_SIZE: Default initial bgp_nexthop_buf size has room for 8 nexthops commit de8d5dff1523bb9fe47d54f31c9e5322bd805b44 Author: Josh Bailey Date: Wed Jul 20 20:46:01 2011 -0700 bgpd: Adds support to mark up the BGP rib table entry with multipath information based on the multipath list (mp_list) generated during the best path calculation. Display "multipath" for paths that are multipath and also on bestpath if the route is multipath. Flag a best path with the BGP_INFO_MULTIPATH_CHG if the multipath set has changed since the last update. This can be used to trigger updates to zebra and peers. The multipath markup is a lazily allocated bgp_info_mpath structure that is added to the best path and any multipaths. The mpath structures are linked together with the best path element at the head and the other elements ordered by nexthop and then by peer address. This markup scheme is updated by calling bgp_info_mpath_update() and passing in a new mp_list the the current multipath set. There are additional API's for walking the multipath set, querying the count of multipaths, and for cleaning up the multipath markup information when freeing path information. * bgpd/bgp_mpath.c * bgp_info_mpath_new(): Allocation of new mpath element * bgp_info_mpath_free(): Release memory for mpath element * bgp_info_mpath_get(): Access mpath element of path. Allocate memory on-demand * bgp_info_mpath_enqueue(): Enqueue a path onto the multipath list * bgp_info_mpath_dequeue(): Remove a path from the multipath list * bgp_info_mpath_first(): Return first path on the multipath list * bgp_info_mpath_next(): Return next path on the multipath list * bgp_info_mpath_count(): Return the number of paths on the multipath list * bgp_info_mpath_count_set(): Set the number of paths on the multipath list * bgp_info_mpath_update(): Update multipath markup on bgp route table entry and flag any changes. Emit 'debug bgp event' output on any multipath change. * bgpd/bgp_mpath.h * struct bgp_info_mpath: Information added to a bgp_info path to record multipath information * External declarations for new functions in bgp_mpath.c * bgpd/bgp_route.c * bgp_info_free(): Free mpath memory when freeing path information * bgp_info_reap(): Dequeue path from multipath queue before deleting it * bgp_best_selection(): Calls bgp_info_mpath_update() with latest mp_list to mark-up rib table entry * bgp_vty_out_detail(): Add display of multipath flag for a path. Also display 'multipath' for bestpath if it is a multipath route * bgpd/bgp_route.h * struct bgp_info: Add pointer to bgp_info_mpath information * Add flags to mark a path as multipath (BGP_INFO_MULTIPATH) and to mark bestpath if multipath information has changed (BGP_INFO_MULTIPATH_CHG) * lib/memtypes.c * Add MTYPE_BGP_MPATH_INFO for allocating memory for bgp_info_mpath * tests/bgp_mpath_test.c * Add test case for bgp_info_mpath_update() and supporting functions commit 96450faf3385a6ed9f4dd5c2c58776c4a664a8da Author: Josh Bailey Date: Wed Jul 20 20:45:12 2011 -0700 bgpd: Adds equal-paths check to path comparison. Paths that are equal to the best path are accumulated onto an ordered list (mp_list) if maximum-paths is configured. A future commit will add the multipath markup to the BGP rib table based on the mp_list. Add unit test for the added mp_list functions. Deterministic MED is not supported in this commit, it will be added later. * bgpd/bgp_aspath.c * Make aspath_cmp() an external symbol so it can be used in equivalent paths check * bgpd/bgp_aspath.h * Add extern declaration of aspath_cmp() * bgpd/bgp_mpath.c * bgp_info_nexthop_cmp(): Compares nexthops of two paths * bgp_info_mpath_cmp(): Compare function to order multipaths by nexthop and then by peer address * bgp_mp_list_init(): Initialize a list with the multipath order function * bgp_mp_list_clear(): Clear out the mp_list * bgp_mp_list_add(): Add a multipath to mp_list * bgpd/bgp_mpath.h * External declarations for above added functions in bgp_mpath.c * bgpd/bgp_route.c * bgp_info_cmp(): Add equivalent paths result (paths_eq). If eBGP paths are equal down to IGP metric check, flag as equal if peer AS matches. Similarly for iBGP paths but compare full AS_PATH. * bgp_best_selection(): If multipath is enabled, accumulate equivalent paths in mp_list. Add debug bgp event output to see result (will be filtered later to display only when change occurs) * bgp_process_rsclient(): Pass multipath config to bgp_best_selection() * bgp_process_main(): Pass multipath config to bgp_best_selection() * tests/bgp_mpath_test.c * Add unit test case for bgp_mp_list functions commit 42ea68512fc4d04b500def45e8f899321f4081e7 Author: Josh Bailey Date: Wed Jul 20 20:44:23 2011 -0700 bgpd: add bgp_mpath_test.c * tests/bgp_mpath_test.c * New file with test framework for testing BGP multipath * Add test for CLI support functions * tests/Makefile.am * Add new testbgpmpath target commit 165b5fff9dde5536d9cb1f850b36c17bf5654f0f Author: Josh Bailey Date: Wed Jul 20 20:43:22 2011 -0700 bgpd: Add new configuration cli for eBGP and iBGP multipath. There is support to configure this for each (AFI,SAFI), but currently this configuration is only present for IPv4 unicast: maximum-paths [ibgp] <1-255> no maximum-paths [ibgp] [<1-255>] * bgpd/Makefile.am * Add bgp_mpath.h and bgp_mpath.c to build * bgpd/bgp_mpath.h * New file for bgp multipath declarations * define BGP_DEFAULT_MAXPATHS * bgpd/bgp_mpath.c * bgp_maximum_paths_set(): Configure maximum paths for the given afi, safi and bgp instance * bgp_maximum_paths_unset(): Return maximum paths configuration to the default setting for the given afi, safi and bgp instance * bgpd/bgp_vty.c * Define command strings for above CLI * bgp_config_write_maxpaths(): Outputs configuration for the given afi, safi and bgp instance * Install command elements for IPv4 unicast * bgpd/bgp_zebra.h * bgp_config_write_maxpaths(): External declaration * bgpd/bgpd.c * bgp_create(): Initialize bgp instance to default maximum paths setting * bgp_config_write_family(): Output maximum paths configuration for the given address family * bgp_config_write(): Output maximum paths configuration for IPv4 unicast address family * bgpd/bgpd.h * struct bgp: Add storage for maximum paths configuration for each afi, safi commit a8b79422aadf5dc821af6699e468379002cc61f9 Author: Paul Jakma Date: Wed Mar 23 10:30:30 2011 +0000 bgpd: Fix compile failure if IPv6 build was disabled. * bgp_route.c: ({no_,}ipv6_bgp_network_ttl_cmd) depends on ipv6_bgp_network which is HAVE_IPV6, so these should be too. (bgp_route_init) and the installs should be similarly ifdefed commit fdc38db248a220dcb80ec0ba1f1981087213651d Author: Denis Ovsienko Date: Sun Jul 17 19:33:21 2011 +0400 bgpd: rename SAFI 3 according to RFC4760 - SAFI value 3 is reserved. It was assigned by RFC 2858 for a use that was never fully implemented, so it is deprecated by this document. * zebra.h: rename macro * bgp_fsm.c: (bgp_graceful_restart_timer_expire, bgp_graceful_stale_timer_expire, bgp_stop, bgp_establish): update * bgpd.c: (peer_nsf_stop): update * bgp_open.c: (bgp_capability_vty_out): SAFI 3 isn't a recognized case any more commit 4a1342a56c6fdb90d9af3109afa9442ff0b850d6 Author: Denis Ovsienko Date: Fri Jul 15 00:24:15 2011 +0400 configure: fix OpenPAM detection commit 5112233b7929299b5200ef820d1567f5d7db50e6 Author: Denis Ovsienko Date: Thu Jul 14 16:30:08 2011 +0400 configure: fix FreeBSD header detection (BZ#408) This change is based on Xavier Beaudouin's patch (which fixes detection of 3 config.h macros on FreeBSD without any impact to Linux build of Quagga) and FreeBSD port patch (which fixes 5 config.h macros, but breaks the Linux build), it fixes 5 macros and works for both FreeBSD 8 and Linux. commit e81537d3be9f95d333d658329e5d69e6188b53c0 Author: Denis Ovsienko Date: Thu Jul 14 12:36:19 2011 +0400 bgpd: more SAFI fixes Two macros resolving to the same integer constant broke a case block and a more thorough merge of BGP_SAFI_VPNV4 and BGP_SAFI_VPNV6 was performed. * bgpd.h: MPLS-labeled VPN SAFI is AFI-independent, switch to single * macro * bgp_capability_test.c: update test data * bgp_mp_attr_test.c: idem * bgp_route.c: (bgp_maximum_prefix_overflow, bgp_table_stats_vty) update macro and check conditions (where appropriate) * bgp_packet.c: (bgp_route_refresh_send, bgp_capability_send, bgp_update_receive, bgp_route_refresh_receive): idem * bgp_open.c: (bgp_capability_vty_out, bgp_afi_safi_valid_indices, bgp_open_capability_orf, bgp_open_capability): idem * bgp_attr.c: (bgp_mp_reach_parse, bgp_packet_attribute, bgp_packet_withdraw): idem commit 87f011e5297ab9d3c599916800aab1198613071e Author: Denis Ovsienko Date: Wed Jul 13 16:53:13 2011 +0400 bgpd: fix SAFI for for MPLS labeled VPN-IPv6 * bgpd.h: change value of BGP_SAFI_VPNV6 to 128 (RFC4659, BZ#659) * bgp_route.c: (bgp_table_stats_vty) fix length argument to strncmp() commit ea15b20a7cb8e41e61c48e36a554c576ed6f2f91 Author: heasley Date: Tue Jul 12 20:09:18 2011 +0400 bgpd: consistent log msg format (BZ#565) commit 82a963a1b8d9066f5e3e24e98b65398d32a73876 Author: Dmitrij Tejblum Date: Tue Jul 12 17:53:33 2011 +0400 ospf6d: check MTU with message header size in mind * ospf6_message.c: (ospf6_packet_max): new function, return maximum IPv6 payload on an interface; (ospf6_hello_send, ospf6_dbdesc_send, ospf6_dbdesc_send_newone, ospf6_lsreq_send, ospf6_lsupdate_send_neighbor, ospf6_lsupdate_send_interface, ospf6_lsack_send_neighbor, ospf6_lsack_send_interface): compare message size with the maximum payload instead of the MTU. commit ab1be8a20de4db0d17e28483660627fd843845f1 Author: Dmitrij Tejblum Date: Fri Apr 22 19:27:54 2011 +0400 ospf6d: copy "mtu-ignore" option from ospfd "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 commit 878715cc78de825894d83458b7c8bd68e3f347cc Author: Denis Ovsienko Date: Tue Jul 12 17:14:13 2011 +0400 version RE-0.99.17.1 commit e70e575a8cb1edcab2eedade04bb4ac31938bddf Author: Paul Jakma Date: Tue Jul 5 00:41:59 2011 +0400 bgpd: Remove AS Path limit/TTL functionality * draft-ietf-idr-as-pathlimit doesn't seem to have gone anywhere, and its author does not think it will make progress in IDR. Remove all support introduced for it, but leave stubs for the commands to avoid breaking any configurations. Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d. (cherry picked from commit c8f3fe3063cb9ff193b13011cfbda3e605395340) Conflicts: bgpd/bgp_attr.c (caused by c8e7b895, resolved) commit fc09716b81e67f2d06dc92ff7bcb1efdf18c4eec Author: Paul Jakma Date: Sun Dec 5 17:17:26 2010 +0000 bgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error * bgp_attr.c: (bgp_attr_ext_communities) Certain extended-community attrs can leave attr->flag indicating ext-community is present, even though no extended-community object has been attached to the attr structure. Thus a null-pointer dereference can occur later. (bgp_attr_community) No bug fixed here, but tidy up flow so it has same form as previous. Problem and fix thanks to anonymous reporter. (cherry picked from commit 0c46638122f10019a12ae9668aec91691cf2e017) commit f668053f1453d64296db6807101450ad749ba730 Author: Denis Ovsienko Date: Fri Mar 18 20:20:53 2011 +0300 doc: fix "ipv6 address" interface command syntax (#608) (cherry picked from commit e6844aa5d23cf56dd1f31afc96e8145ab188953f) commit 49efb768502ddb1bb78d609c25b3818c6a519a2a Author: Andrew J. Schorr Date: Thu Feb 24 13:52:14 2011 +0300 ripd: resolve debug statements issue (bug 442) ...A nasty bug, if you forgot to disable debugging, stored the config and reboot your machine - if you really depend on ripd, then the machine will not fully come back on the network, because ripd fails. (cherry picked from commit 0fa0335316ce14a79ea4bbb0c40e1322c9941dd3) commit 16ac59798e0bafc5083ae4b3be2c3edd89a62e5f Author: David Ward Date: Mon Jan 17 10:58:52 2011 +0300 bgpd: VTY string fixes for debug commands * bgpd/bgp_debug.c: fix VTY strings for BGP debug commands to match correct syntax (cherry picked from commit 6e22b9017e1ae2ce61c383b1b2b63973207704ac) commit bbccf41f8e5fb83831da81a339a578a3d5fc5f4a Author: Dmitrij Tejblum Date: Fri Jan 14 18:27:05 2011 +0300 bgpd: fix handling of "Unsupported Capability" * bgp_packet.c: (bgp_notify_receive) justify the difference between BGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as it is explained in RFC5492, page 3, paragraph 1. "Unsupported Capability" error does not mean, that the peer doesn't support capabilities advertisement -- quite the opposite (if the peer would not support capabilities advertisement, the code would be "Unsupported Optional Parameter"). Thus there is no reason to mark the peer as one non-supporting capabilities advertisement. Example: suppose the peer is in fact IPv6-only, but we didn't configure anything address-family specific for it. Then, the peer would refuse the session with "Unsupported Capability" code. If we internally set the peer as non-supporting capabilities advertisement after that, we will not be able to establish the session with it ever, even with a fixed configuration -- IPv6-only BGP session cannot be established without capabilities. In practice an edge case would be seen as the same IPv6 peer working with its "neighbor" block read from bgpd.conf, but not working, when slowly input in "conf t" mode. (cherry picked from commit c7aa8abd8788c3607ad0131f02e892cf92221e40) commit a1239bc50d26ce963352f8ddaa6c1382e437d286 Author: Dmitrij Tejblum Date: Thu Jan 13 18:25:40 2011 +0300 ospf6d: fix crash in SPF calculation * ospf6_spf.c: Don't replace a node with another node with a lower number of hops, instead get them from the queue in the correct order. (Actually, the replacement crashed the ospf6d daemon rather than worked.) (cherry picked from commit 403138e189c24f6867824c4eeb668d11564e1ca0) commit dfc1d5caacfe0346499f2eceff18d56af0b85e2f Author: Denis Ovsienko Date: Wed Dec 8 18:51:37 2010 +0300 bgpd: fix community-list error message spelling * bgp_vty.c: (community_list_perror, show_ip_community_list_arg, show_ip_extcommunity_list_arg) fix spelling (cherry picked from commit b729294c8c5c6f2af8ddf6cfbea2374b6faabe9d)