)]}'
{
  "log": [
    {
      "commit": "34c5d89fed6e8e91ae3cde478f1f4816d69bf09e",
      "tree": "2bb502e14677feb9db54f4986bf0934a0b7a66db",
      "parents": [
        "6f235418ad911040c5a6252d11b05cef5984fd8e"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Mon Nov 09 20:14:53 2015 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "zebra: ipv6 multipath support\n\nThis patch enables support for multipath for IPV6. The nexthop information\nfrom the protocols have ifindices and nexthop addresses in two different\nstructures. This patch combines them to ensure that the correct APIs can\nbe called. Also, given that IPV6 Linux implementation does not support the\nrta_XXX APIs for multipath, the communication with the kernel is in terms\nof a single nh/ifindex pair.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "6f235418ad911040c5a6252d11b05cef5984fd8e",
      "tree": "7471ac66ae42c0f1c5d10cc592dac768e375ae77",
      "parents": [
        "c7c5b02480a506c6d687bf0d3a0c2a7d3e7cfbf6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Apr 05 13:21:20 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "zebra: *addattr should use size_t len args, quell signed v unsigned warning\n"
    },
    {
      "commit": "c7c5b02480a506c6d687bf0d3a0c2a7d3e7cfbf6",
      "tree": "fbcd2aafea751978d47459ddbeee945f5f62699b",
      "parents": [
        "3b847ef4e81c6f1a5d4994680d530045765fd053"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Apr 04 15:19:37 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "vtysh: auto-generated vtysh_cmd.c file should depend on its creator\n"
    },
    {
      "commit": "3b847ef4e81c6f1a5d4994680d530045765fd053",
      "tree": "04fcd0f852e384ba862d815de4aef88b6a4505e8",
      "parents": [
        "7f39242bf44c85bb651506214666b3ebdd78b928"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Apr 22 12:48:49 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "bgpd: Squash spurious \"unknown afi\" log messages\n\n* bgp_packet.c: (bgp_update_receive) doesn\u0027t differentiate between NLRIs that\n  are 0 AFI/SAFI cause they weren\u0027t set, and those because a peer sent a\n  bogus AFI/SAFI, before sending sending what may be a misleading, spurious\n  log message.  Check the .nlri pointer is set and avoid this.\n\nIncorporating a suggestion from: G. Paul Ziemba \u003cunp@ziemba.us\u003e\n"
    },
    {
      "commit": "7f39242bf44c85bb651506214666b3ebdd78b928",
      "tree": "45f21653fcc61151cca7548ba5c2096961bea461",
      "parents": [
        "23cd586eac3cde789e02c13a1236a4fe33dfc5d9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Aug 24 15:53:36 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "*: Remove C99ism, CI system runs builds with CFLAGS and compilers that barf\n"
    },
    {
      "commit": "23cd586eac3cde789e02c13a1236a4fe33dfc5d9",
      "tree": "21ff063298c34db06b946dc70eb4fc6ba3862d20",
      "parents": [
        "8f4269ddff1becca94687252b9571b096cb45b43"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Apr 06 14:03:33 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "zebra: Update news with the status of link-detect and the global default\n"
    },
    {
      "commit": "8f4269ddff1becca94687252b9571b096cb45b43",
      "tree": "1fa611b63988898d448c14efa617ae8b63c6a20a",
      "parents": [
        "a6d400c9158b10207cde40a428ebf2c27f105c0a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Fri Sep 18 11:50:33 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:43 2016 +0100"
      },
      "message": "zebra: Add command to configure default for link-state, and make it sticky\n\n* Provide a way for the user to specify their own preference for the default\n  behaviour of link-detect, independent of the compiled in default.\n\n  Add a global \"default link-detect (on|off)\" command to zebra, to set\n  the default policy for link-detect accordingly.  The command is \"sticky\" -\n  when set it will stay set and always be written out, regardless of how it\n  compares to the baked-in, compile-time default.\n\n  The per-interface \"link-detect\" command is similarly made sticky.\n\n* zebra/interface.h: (zebra_if_linkdetect;) enum for link-detect configured\n  state.\n  (struct zebra_if_defaults) Global link-detect default\n  (struct zebra_if) Add field for per-iface link-detect default.\n* lib/if.c: (if_create_vrf) Remove the default flag setting on if-create\n  here, it\u0027s a zebra flag so do it in zebra\u0027s if_zebra_new_hook\n* zebra/interface.c: Add static storage for global defaults.\n  (if_zebra_new_hook) Set the link-detect flag on new ifaces according to the\n  baked in default or else the configured global default.\n  (config_write_zebra_if_defaults,default_linkdetect_cmd) global link-detect\n  command and config write out machinery.\n  (linkdetect_cmd) Set the configuration state rather than the flag.\n  The new hook will then set the interface flag when the if comes up.\n  (if_config_write) Write config according to configured state, not the\n  low-level flag.\n  (zebra_if_init) add new commands.\n"
    },
    {
      "commit": "a6d400c9158b10207cde40a428ebf2c27f105c0a",
      "tree": "1d9d4854da1a23d9e9c175dc9b7c2daebfe352dd",
      "parents": [
        "3bccb4f3df0530bb4d8961b0867ea04c1bca065f"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Fri Sep 18 08:32:56 2015 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "zebra: Set link-detect on by default\n\nSigned-off-by: Roopa Prabhu \u003croopa@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\n\nEdited by Christian Franke: Fix OSPF Virtual Links\nEdited by Donald Sharp: Add NEWS notification\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-By: paul@jakma.org\n"
    },
    {
      "commit": "3bccb4f3df0530bb4d8961b0867ea04c1bca065f",
      "tree": "828d3df7e320019acee4e7df40bc26cdd1f0f6a9",
      "parents": [
        "7e4025cb65f79d584911042d3e19eee787b9115b"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Fri Mar 11 12:21:26 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "zebra: add developer test functions for FPM code\n\nAdd test functions for the zebra code that interfaces with the\nForwarding Plane Manager. These functions can be invoked in a\ndevelopment build via the recently-added \u0027invoke\u0027 command.\n\nFor example:\n\n  # invoke zebra function zfpm_dt_benchmark_protobuf_encode 100000\n\nChanges:\n\n  * zebra/zebra_fpm_dt.c\n\n    Add the following functions. Each function encodes or decodes a\n    route in a particular FPM format a specified number of times.\n\n    - zfpm_dt_benchmark_netlink_encode()\n    - zfpm_dt_benchmark_protobuf_encode()\n    - zfpm_dt_benchmark_protobuf_decode()\n\n  * zebra/Makefile.am\n\n    Compile zebra_fpm_dt when building a development build.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "7e4025cb65f79d584911042d3e19eee787b9115b",
      "tree": "153d7956cc8719fa0ef0d39bf4c4198db8ddf924",
      "parents": [
        "6112d11a978af54f87ac55daa9e965d949cb0041"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Fri Mar 11 12:21:24 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "build: support for \"development build\"\n\n* configure.ac\n\n    Add the --enable-dev-build flag. It controls the DEV_BUILD\n    define for autoconf and automake, which can be used to\n    conditionally build in code that is only intended for development..\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "6112d11a978af54f87ac55daa9e965d949cb0041",
      "tree": "3cffda401e4fdebce481b463bfe09345ed400efd",
      "parents": [
        "5779fda137803a4b1e534f6ba70781681baf3fda"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Mon Apr 04 10:54:59 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "doc: add blurb on use of protobuf with FPM\n\nAdd text about using protobuf as an alternative format for the FPM\ninterface.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "5779fda137803a4b1e534f6ba70781681baf3fda",
      "tree": "8529f38977a19590ac5ecbb273c6629aec0b83da",
      "parents": [
        "b8ae330cd3c65808044d344b24f0917b312c4fb9"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Mon Apr 04 10:54:58 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "zebra: optionally use protobuf with FPM\n\nChange zebra so that it can optionally use protobuf serialization when\ncommunicating with a Forwarding Plane Manager component.\n\n  * zebra/main.c\n\n    Add the --fpm-format/-F command line option. This allows the user\n    to control the format (protbuf|netlink) that is used to\n    communicate with the FPM.\n\n  * zebra/zebra_fpm.c\n\n    - zebra_init_msg_format(),\n\n      This new function is invoked on process startup to determine the\n      FPM format that should be used.\n\n    - zfpm_init()\n\n      Change to accept any \u0027FPM message format\u0027 specified by the user\n      (via the new command line flag).\n\n    - zebra_encode_route()\n\n      Tweak to use the selected FPM format.\n\n  * zebra_fpm_protobuf.c\n\n    New code to build protobuf messages to be sent to the FPM.\n\n  * zebra/Makefile.am\n\n    - Include common.am\n\n    - Build new file zebra_fpm_protobuf.c when protobuf is available.\n\n    - Link with the fpm_pb library.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "b8ae330cd3c65808044d344b24f0917b312c4fb9",
      "tree": "092dd842454bb360f81a38ecfa5b283c5d173427",
      "parents": [
        "ef20ef7de9fe52931e7a5ce07b8228e87f7f52b6"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Thu Jul 14 09:59:30 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "Use only the ISC license for .proto files.\n\nSimplify licensing for protobuf files based on discussion on the\nquagga-dev mailing list.\n\nPreviously, users could choose between the GPL and the ISC license.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "ef20ef7de9fe52931e7a5ce07b8228e87f7f52b6",
      "tree": "b9aabfbf06546079bcddee105fd8be7e3fadc6f6",
      "parents": [
        "b2624487659d8148ca253147fd7e63560a439c8b"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Mon Apr 04 10:54:57 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "fpm: Add protobuf support for FPM.\n\nCode that allows a client to convey routes to a Forwarding Plane\nManager component using protobuf instead of netlink..\n\n  * fpm/fpm.proto\n\n    Protobuf definitions pertaining to the Forwarding Plane Manager.\n    In particular, this file defines the AddRoute and DeleteRoute\n    messages.\n\n  * fpm/fpm.h\n\n    Tweak FPM message header definition to also allow messages to be\n    encoded in protobuf format.\n\n  * fpm/{fpm_pb.h,.gitignore,.Makefile.am}\n\n    Add the fpm_pb library, which contains code for interfacing with\n    the FPM using protobuf.\n\n  * configure.ac\n\n    Generate fpm/Makefile.\n\n  * Makefile.am\n\n    Add fpm subdirectory to build.\n\n  * common.am\n\n    Add flags to be used by clients of the fpm_pb library.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "b2624487659d8148ca253147fd7e63560a439c8b",
      "tree": "b82b51cf2968aeaedb67ec647ca87ed983b56ffb",
      "parents": [
        "07e5b645059167a37ccf1079a125114339c0df9e"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Mon Apr 04 10:54:56 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "build: turn off automake portability warnings\n\nModify configure.ac to disable portability warnings for automake --\nour automake code (in particular common.am) uses some constructs\nspecific to gmake.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n"
    },
    {
      "commit": "07e5b645059167a37ccf1079a125114339c0df9e",
      "tree": "f77f6d914078f8bfb5271c17d2d9e4cc46a78dcf",
      "parents": [
        "cbd976b54d51fea2f3d532e8d5aac66d6294acc2"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@sproute.com",
        "time": "Mon Apr 04 10:54:55 2016 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:42 2016 +0100"
      },
      "message": "qpb: Add support for protobuf.\n\nInfrastructure that allows protocol buffers to be used in Quagga. The\nchanges below comprise of:\n\n  - Build hooks\n\n  - Protobuf definitions for common types.\n\n  - Library routines for working with protobuf, including functions\n    that help translate between common quagga types and their protobuf\n    equivalents.\n\nChanges:\n\n  * qpb/{Makefile.am,README.txt,qpb.h,.gitignore}\n\n    Add the qpb library, which provides shared code and definitions\n    for using protocol buffers in quagga code.\n\n  * qpb/qpb.proto\n\n    Protobuf definitions that can be shared by all of quagga.\n\n  * qpb/linear_allocator.h\n\n    An allocator that allocates memory by walking down towards the end\n    of a buffer. This is used to cheaply allocate/deallocate memory on\n    the stack for protobuf operations.\n\n  * qpb/qpb_allocator.[ch]\n\n    Thin layer that allows a linear allocator to be used with the\n    protobuf-c library.\n\n  * common.am\n\n    This is an automake fragment that is intended to be shared by\n    Makefile.am files in the tree. It currently includes definitions\n    related to protobuf.\n\n  * configure.ac\n\n    - Add logic to optionally build protobuf code.\n\n      By default, protobuf support is enabled if the protobuf C\n      compiler (protoc-c) is available, and the associated header\n      files/library can be found.\n\n      The user can choose to override this behavior via the new\n      --disable-protobuf/--enable-protobuf flags.\n\n    - Include the quagga protobuf library (qpb) in the build.\n\n  * .gitignore\n\n    Ignore source code generated by protobuf compiler.\n\n  * Makefile.am\n\n    Add \u0027qpb\u0027 to the list of subdirectories.\n\nSigned-off-by: Avneesh Sachdev \u003cavneesh@sproute.com\u003e\n\nEdited: Paul Jakma \u003cpaul.jakma@hpe.com\u003e: Change the sense of the\n        configure enable option to require explicit specifying, as\n        an experimental feature.\n"
    },
    {
      "commit": "cbd976b54d51fea2f3d532e8d5aac66d6294acc2",
      "tree": "9a073c273e3d15c3da0d0693683cd71c93191d12",
      "parents": [
        "57439bf2dd0e2aa9c5a4c95919503dae1e360a19"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Fri Feb 26 10:34:01 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: Document how to add standard copyright claims to files\n\n* (REQUIRED READING) Copyright claims may be documented in the standard way,\n   with a \"Copyright ...\" line near the beginning of the file.\n\nIncorporating suggestions and refinements from:\n\nLou Berger \u003clberger@labn.net\u003e\n"
    },
    {
      "commit": "57439bf2dd0e2aa9c5a4c95919503dae1e360a19",
      "tree": "ad98008c1eed0bd766bc888cd46d7022a02fc438",
      "parents": [
        "d1aa80f04d12c096b10ba0862edbe6c30b5f7ebb"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 05 14:46:58 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: New code _MUST_ use a bounded-buffer in handling untrusted data.\n\n* Guidelines: New code must use a bounded-buffer abstraction that provides\n  at least some level of sanity checks on accesses.  Direct pointer\n  twiddling based on untrustable buffers is not generally acceptable in new\n  code in Quagga.\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "d1aa80f04d12c096b10ba0862edbe6c30b5f7ebb",
      "tree": "72e2473e753f2d166fbffa51ca62cdb564483cf4",
      "parents": [
        "d3cf6c689a64ab83ba574e7df2472129603f1875"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Tue Jan 26 14:00:12 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: Note that \"Signed-off-by\" not used for authorship/rights info\n\n* \"Signed-off-by\" is overloaded, and possibly not even well understood.\n  As per the text, it should not be used to indicate authorship or other\n  rights information, within Quagga.\n"
    },
    {
      "commit": "d3cf6c689a64ab83ba574e7df2472129603f1875",
      "tree": "a26287954a7a895ec79dd6f2606040b8c63e1e03",
      "parents": [
        "2f6aa36e8d72d712738fad2c53ab95f7fcbefc61"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Tue Jan 26 14:00:11 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: Add required reading section \u0026 commit should give full rights details\n\n* HACKING.tex: (COMMIT MESSAGES) It\u0027s pretty critical that commit messages\n  give all the detail required to figure out what authorship/copyright\n  claims might come into play.\n\n  (REQUIRED READING) Add a section on what people are implicitly agreeing to\n  when they contribute.  It\u0027s fairly obvious, common sense stuff.  Spell it\n  out though.  Note that COMMIT MESSAGES are also required reading.\n\n  (Cover page) Draw attention to REQUIRED READING.\n\nA previous version was:\nAcked-by: Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n"
    },
    {
      "commit": "2f6aa36e8d72d712738fad2c53ab95f7fcbefc61",
      "tree": "df3a88f894784e068d9c9968b42de12e2d06b35d",
      "parents": [
        "3affb6c04881f99aafbbb12de76bdde1dbea0408"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Tue Jan 26 14:00:10 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: Fix internal section links\n\nSeems when pandoc converts tex to markdown it doesn\u0027t output internal\nreference links in a format it recognises itself. Fix.\n"
    },
    {
      "commit": "3affb6c04881f99aafbbb12de76bdde1dbea0408",
      "tree": "c3c1f7be9d8f571543c59bd91fdf3efbc3bd6d89",
      "parents": [
        "f458d88e57e982e8f00a3d2db35a2c6e0bb331fa"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Tue Jan 26 14:34:41 2016 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "HACKING: Update HACKING with anything relevant from pending and prune\n\n* HACKING.md: Add USEFUL URLs section, add link to patchwork\n* HACKING.pending: Prune out stuff moved to HACKING or well out of date or\n  unreachable.\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "f458d88e57e982e8f00a3d2db35a2c6e0bb331fa",
      "tree": "e9aeb1c68e02cfe1751b71d5b22d3d14fafb843b",
      "parents": [
        "584083d50511e19b228cce1e4a1cbcb28fae6b49"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 24 18:58:09 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "bgpd: ditch unused bgp_node_*() functions\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "584083d50511e19b228cce1e4a1cbcb28fae6b49",
      "tree": "58d6f9bf006083287d212ea0a09892c16d9d1b66",
      "parents": [
        "dfb9bd7aaadc2f5abb9bc9aecbd73b9d8b3a788c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 24 18:58:08 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:41 2016 +0100"
      },
      "message": "bgpd: divorce router-id logic from CLI \u0026 zebra\n\nLogic for determining the router-id was spread out over bgp_zebra.c and\nbgp_vty.c.  Move to bgpd/bgpd.c and have these two call more properly\nencapsulated functions.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "dfb9bd7aaadc2f5abb9bc9aecbd73b9d8b3a788c",
      "tree": "5fdaeee00ed73a504721d3144849394e6e3110ea",
      "parents": [
        "4afa3ddd17464ecce91b6ed9df27b1231fb3e939"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 24 18:58:07 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "bgpd: minor header/API clean up\n\nAdds \"const\" on:\n- peer_update_source_addr_set()\n- peer_description_set()\nAdds parameter names on:\n- bgp_timers_set()\n  (really confusing, this one, with 2 unexplained args of same type)\nAdds new setter:\n- peer_afc_set(), calling peer_activate/peer_deactivate.\n  (intended for API consumers, matches peer-\u003eafc)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4afa3ddd17464ecce91b6ed9df27b1231fb3e939",
      "tree": "b56af31b7ce732f085f3a99f2ce10f4c1d738695",
      "parents": [
        "d83b8d6d73021815a87e000c50863a105af80226"
      ],
      "author": {
        "name": "Philippe Guibert",
        "email": "philippe.guibert@6wind.com",
        "time": "Tue May 24 16:52:02 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "bgpd: Add new configuration cli for graceful restart.\n\nThere is support to configure graceful restart timer. This is the\ntime to wait to delete stale routes before a BGP open message is\nreceived.\n\nbgp graceful-restart restart-time \u003c1-3600\u003e\nno bgp graceful-restart [\u003c1-255\u003e]\n\n* bgpd/bgp_vty.c\n  * Define command strings for above CLI\n* bgpd/bgpd.c\n  * bgp_config_write(): Output graceful restart-time configuration\n\nSigned-off-by: Philippe Guibert \u003cphilippe.guibert@6wind.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "d83b8d6d73021815a87e000c50863a105af80226",
      "tree": "5f9c20043869eea56971eb4d8fad1b161a29d0fe",
      "parents": [
        "ee5fbe26f2b7561457a1d0c8b5ce72b512638cb0"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:41 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "lib: add AF_ETHERNET/AFI_ETHER\n"
    },
    {
      "commit": "ee5fbe26f2b7561457a1d0c8b5ce72b512638cb0",
      "tree": "0808f78d99050d18afad8662e41e6d30cb0e2a4d",
      "parents": [
        "b8cb7c3fd44cfd0781a5e80a369ecb19eee9a4a7"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:38 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "lib: dump memory stats on core\n"
    },
    {
      "commit": "b8cb7c3fd44cfd0781a5e80a369ecb19eee9a4a7",
      "tree": "f9a8872017a8c4b84c9041ed25c6495dd964a0b6",
      "parents": [
        "93b493a2b010df4f67c7173c0928c8f86d9e1aa2"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:33 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "lib: fix memory leak in zprivs_caps_init\n"
    },
    {
      "commit": "93b493a2b010df4f67c7173c0928c8f86d9e1aa2",
      "tree": "062ad8527bbbc79e30b52df7a741e13030b7358d",
      "parents": [
        "49c370b74df11832239408f68119bd0a0a19a6e8"
      ],
      "author": {
        "name": "Igor Ryzhov",
        "email": "iryzhov@nfware.com",
        "time": "Wed May 11 15:26:39 2016 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "bgpd: fix wrong help strings of \"match peer\" and \"no match peer\" commands\n\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "49c370b74df11832239408f68119bd0a0a19a6e8",
      "tree": "c4a613673e1b1a4ec9f66845e699ebe75357f313",
      "parents": [
        "06de82eaeb11a1c84798cc222af77cdb07af2e4e"
      ],
      "author": {
        "name": "Colin Petrie",
        "email": "cpetrie@ripe.net",
        "time": "Wed May 11 11:56:58 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "bgpd: fix MRT table dumps for locally-originated routes\n\nI\u0027ve been working on a small patch to correct an issue in the BGP MRT\ntable dump code. It\u0027s a quick\u0027n\u0027easy fix initially, and I\u0027d appreciate\nany feedback on making it better :)\n\nIssue:\n\nWhen the BGP table dump code runs, it generates the peer_index_table.\nThis walks the list of peers, and dumps out their IP, ASN, address\nfamily, etc. It also sets the peer index number in the peer struct.\n\nThen the code walks the RIB, and for each prefix, writes out RIB\nentries, that refer to the peer index number.\n\nHowever, when it finds prefixes that are locally originated, the\nassociated peer is the \u0027self\u0027 peer, which wasn\u0027t in the list of peers,\nnever gets an index number assigned, but because it is calloc\u0027d, the\nindex number is set to 0.\n\nEnd result: locally-originated routes are associated with whichever peer\nhappens to be first in the list of remote peers in the index table :)\n\nExample (from one of our route collectors) - these are two of our\noriginated prefixes (bgpdump output):\nTABLE_DUMP2|1457568002|B|12.0.1.63|7018|84.205.80.0/24||IGP|193.0.4.28|0|0||NAG|64512\n10.255.255.255|\nTABLE_DUMP2|1457568006|B|12.0.1.63|7018|2001:7fb:ff00::/48||IGP|::|0|0||NAG||\n\nThe prefixes are announced by us (note it has an empty AS PATH (the\nfield after the prefix)) but also looks like it was received from AS7018\n(12.0.1.63). In fact, the AS7018 peer just happens to be the first peer\nin the index table.\n\nFix:\n\nThe simplest fix (which is also the method adopted by both OpenBGPd and\nthe BIRD mrtdump branch) is to create an empty placeholder \u0027peer\u0027 at the\nstart of the peer index table, for all the routes which are locally\noriginated to refer to.\n\nI\u0027ve attached a patch for this.\nHere\u0027s a resulting bgpdump output after the patch:\nTABLE_DUMP2|1458828539|B|0.0.0.0|0|93.175.150.0/24||IGP|0.0.0.0|0|0||NAG||\nNow it is more obvious that the prefix is locally originated.\n\nThere are more complicated potential ways of fixing it\n1) skip the local routes when dumping the RIB. This leads to questions\nabout what an MRT table dump *should* contain :)\n2) include the \u0027self\u0027 peer in the list of peers used to generate the\nindex table.\netc etc.\n\nBut I\u0027m quite happy with my \u0027create a fake peer, and associate local\nroutes with it\u0027 method :)\n\nYour thoughts and feedback are welcome!\n\nRegards,\n\nColin Petrie\nSystems Engineer\nRIPE NCC RIS Project\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "06de82eaeb11a1c84798cc222af77cdb07af2e4e",
      "tree": "10bc9180cb3526b167629956514a64de734fc1f2",
      "parents": [
        "220355df533f9c127c32de296513fae180c1568d"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Mon May 09 15:18:56 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:40 2016 +0100"
      },
      "message": "pimd: send pim prune via correct interface when rpf upstream interface for a source changes\n\nWhen the rpf upstream interface for a joined source changes, a prune was\nbeing sent out the new rpf upstream interface that was intended for the old\nupstream router.  The prune should be sent out the old rpf upstream\ninterface so that the old route for the multicast source is pruned.\n\nReviewed-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nSigned-off-by: Taylor Bouvin \u003ctbouvin@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "220355df533f9c127c32de296513fae180c1568d",
      "tree": "bab73ee3a0a7dbef15f1631f05568677bc3a6f10",
      "parents": [
        "0ffd69a9bf58ab2e0105336f10753293230a4360"
      ],
      "author": {
        "name": "Andrej Ota",
        "email": "andrej@ota.si",
        "time": "Mon May 09 20:49:01 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "bgpd: fix BGP IPv6 route map error\n\nBGP refactoring in commit f3cfc46450cccc5ac035a5a97c5a1a5484205705\nintroduced an error which broke route map processing for IPv6 where\nAFI_IP was used instead of AFI_IP6.\n\nThis patch fixes the typo.\n\nSigned-off-by: Andrej Ota \u003candrej@ota.si\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "0ffd69a9bf58ab2e0105336f10753293230a4360",
      "tree": "4754dc8d7e943c17145d201c29a0c5eb3b4a1ff8",
      "parents": [
        "3676cb0c029c8f8f06ab703dd441c1e23e5ef333"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Wed Aug 03 15:22:39 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "doc: Add isisd.texi to quagga_TEXINFOS so it gets in dist tarball\n"
    },
    {
      "commit": "3676cb0c029c8f8f06ab703dd441c1e23e5ef333",
      "tree": "613e8f2a7c7b2b9e2d334830ce994f50611e9d4e",
      "parents": [
        "481986950290323e2f5d1e774a666d4b7ed510d6"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Jul 29 13:39:37 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "*: Remove some for statement declarations\n\nWe generally require C99.  Some compilers, e.g.  gcc, barf on\n\u0027for\u0027 statement declared variables, if std\u003d{gnu,c}99 or higher is not\ngiven - even while seemingly accepting other C99 constructs.\n\nAs it\u0027s trivial, remove these.\n"
    },
    {
      "commit": "481986950290323e2f5d1e774a666d4b7ed510d6",
      "tree": "bf6c499c2bbdf39af42f85679820b38038ad3ffe",
      "parents": [
        "ec04b9faf9ec55ccf7d5bb16cf17a85051fc8270"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:21:17 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "ospfd: Add support Router Capabilities support to OSPF\n\nThis is an implementation of RFC4970 (Router Information) and\nRFC5088 (PCE Capabilities announcement)\n\n* ospfd/Makefile.am: Add new file ospf_ri.c and ospf_ri.h\n* ospfd/ospf_opaque.c: Add new Router Capabilities code point\n* ospfd/ospf_ri.[c,h]: Implementation of RFC4970 \u0026 RFC5088\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ec04b9faf9ec55ccf7d5bb16cf17a85051fc8270",
      "tree": "3966ebeaf299c3400079a8b3bf4a396f2e454e47",
      "parents": [
        "4f593574c41deb598cbbefde5c6d938799e81d5a"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:18:18 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "doc: Update documentation for Traffic Engineering\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "4f593574c41deb598cbbefde5c6d938799e81d5a",
      "tree": "755b7fb742265b2dc4fe086e059f1ac6b060e6f9",
      "parents": [
        "29a1401706a762541b366c7844507efe2bc1345d"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 19:03:05 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "isisd: Add support of Traffic Engineering\n\nThese patches is an implementation of RFC5305 that enable the\nsupport of Traffic Engineering in IS-IS\n\n* isisd/Makefile.am: Add new files isis_te.c and isis_te.h\n\n* isisd/isis_circuit.[c,h]: Add new mpls_te_circuit structure to\n  isis_circuit structure to handle new Traffic Engineering TLVs\n* isisd/isis_lsp.c: Update LSP handler to mux/demux Traffic Engineering TLVs\n* isisd/isis_main.c: Add initialisation of ISIS TE\n* isisd/isis_pdu.c: Update function process_p2p_hello() to retrieve remote\n  IP address to populate Traffic Engineering TLV.\n* isisd/isis_te.[c,]: Implementation of RFC5305\n* isisd/isis_tlv.[c,h]: Update TLV definition and function to handle\n  Traffic Engineering ones\n* isisd/isis_zebra.c: Add new function isis_zebra_link_params() to retrieve\n  the link parameters of interfaces from ZBus to populate the Traffic\n  Engineering TLVs\n* isisd/isisd.[c,h]: Add Traffic Engineering support with new debug command\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "29a1401706a762541b366c7844507efe2bc1345d",
      "tree": "d7e7c770f90cca5ad3748e167bc8028a6084f7f1",
      "parents": [
        "ac10d30c03091eace3c0405aa8ccb7d3c09e7bd2"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:42:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:39 2016 +0100"
      },
      "message": "ospfd: Update Traffic Engineering support\n\nThese patches update original code to RFC3630 (OSPF-TE) and add support of\nRFC5392 (Inter-AS v2) \u0026 RFC7471 (TE metric extensions) and partial support\nof RFC6827 (ASON - GMPLS).\n\n* ospfd/ospf_dump.[c,h]: Add new dump functions for Traffic Engineering\n* ospfd/ospf_opaque.[c,h]: Add new TLV code points for RFC5392\n* ospfd/ospf_packet.c: Update checking of OSPF_OPTION\n* ospfd/ospf_vty.[c,h]: Update ospf_str2area_id\n* ospfd/ospf_zebra.c: Add new function ospf_interface_link_params() to get\n  Link Parameters information from the interface to populate Traffic\n  Engineering metrics\n* ospfd/ospfd.[c,h]: Update OSPF_OPTION flags (T -\u003e MT and new DN)\n* ospfd/ospf_te.[c,h]: Major modifications to update the code to new\n  link parameters structure and new RFCs\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ac10d30c03091eace3c0405aa8ccb7d3c09e7bd2",
      "tree": "b855b841903149f68f518068fe99b120f94c0712",
      "parents": [
        "15773a87ce652da5b02ca14dc0088408899ea007"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:33:42 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "vtysh: Add support of new link-params CLI\n\nIn vtysh_config.c/vtysh_config_parse_line(), it is not possible to continue\nto use the ordered version for adding line i.e. config_add_line_uniq() to print\nInterface CLI commands as it completely break the new LINK_PARAMS_NODE.\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "15773a87ce652da5b02ca14dc0088408899ea007",
      "tree": "0c4d6ceab9ca1d8183382f40601265133b15f68b",
      "parents": [
        "ae51c9d510fb7d9cc41ead8803af916c1f4b34ca"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 18:29:55 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: Add link parameters support to Zebra\n\n* zebra/interface.c:\n   - Add new link-params CLI commands\n   - Add new functions to set/get link parameters for interface\n* zebra/redistribute.[c,h]: Add new function to propagate link parameters\n  to routing daemon (essentially OSPFD and ISISD) for Traffic Engineering.\n* zebra/redistribute_null.c: Add new function\n  zebra_interface_parameters_update()\n* zebra/zserv.[c,h]: Add new functions to send link parameters\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "ae51c9d510fb7d9cc41ead8803af916c1f4b34ca",
      "tree": "069b3a1b5d674d215a7520211e32d314d865e17f",
      "parents": [
        "7e49a4f99273858887806c6251d958e1e664bedf"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Tue Apr 19 16:21:46 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: Add new if_link_params structure\n\nThis new structure is the basis to get new link parameters for\nTraffic Engineering from Zebra/interface layer to OSPFD and ISISD\nfor the support of Traffic Engineering\n\n* lib/if.[c,h]: link parameters struture and get/set functions\n* lib/command.[c,h]: creation of a new link-node\n* lib/zclient.[c,h]: modification to the ZBUS message to convey the\n  link parameters structure\n* lib/zebra.h: New ZBUS message\n* lib/memtypes.c: Add new memory type for Traffic Engineering support\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "7e49a4f99273858887806c6251d958e1e664bedf",
      "tree": "35279e730589b0a460211eeb73279bdff1978102",
      "parents": [
        "a3b161bb72d7fdb58e79afd0f706849601f77fe2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Aug 02 13:36:03 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "build: Test for features.h and move include to lib/zebra.h\n\n* configure.ac: Check for features.h, which is needed to get Clang to\n  define __STDC_IEC_559__.\n* lib/{stream.c,zebra.h}: move the features.h include to zebra.h, so\n  lib/network.c also gets it.\n"
    },
    {
      "commit": "a3b161bb72d7fdb58e79afd0f706849601f77fe2",
      "tree": "d7a9e5323ec658fc144306c44e0783d7c0f4db92",
      "parents": [
        "4359501e1a427159c9b49f3041889837aaaf2eb3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Aug 01 15:13:58 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: IEC559 tests are fragile, reduce to warning rather than error.\n\n* {network,stream}.c: Weaken the compile time tests for IEEE754 / IEC-559\n  binary floating point format from an error to a warning when not detected.\n\n  I can\u0027t think of any platforms that are not IEEE-754 format, and as the\n  testing for the defines appears to be fragile (often not set) the error\n  just gives false positives.\n\n  Even the warnings may be too much.  Those should probably be moved\n  to some configure test.  Will do for now though, to fix compilation\n  on CentOS and some BSDs.\n"
    },
    {
      "commit": "4359501e1a427159c9b49f3041889837aaaf2eb3",
      "tree": "a9f2a5b71e75a61f84100446f90d9339e6152587",
      "parents": [
        "d41e7b975b901f109608471b77c46718c1fb5b45"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue May 19 18:50:49 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: consolidate ntohf/htonf from ospfd/isisd TE to lib/network\n\n* lib/network.{c,h}: Consolidate the ntohf/htonf functions used in ospfd\n  TE to here, using the value-passing variant that fits with existing\n  ntoh/hton functions.\n* ospfd/ospf_opaque.c: Remove its variants.\n* ospfd/ospf_te.c: Update to use the consolidated, by-value variant.\n"
    },
    {
      "commit": "d41e7b975b901f109608471b77c46718c1fb5b45",
      "tree": "8db478bd5cd56ab041ba8e7251b3849954abd922",
      "parents": [
        "581ecbfe91d23791c116a8e3790208a17c1a5983"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue May 19 15:38:43 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib/stream: add float/double \u003c-\u003e IEEE-754 single/double mux/demuxers\n\n* stream.{c,h}: Add stream_get{f,d} and stream_put{f,d}) demux and muxers to\n  safely convert between big-endian IEEE-754 single and double binary\n  format, as used in IETF RFCs, and C99.  Implementation depends on host\n  using __STDC_IEC_559__, which should be everything we care about.  Should\n  correctly error out otherwise.\n\n  Thanks to Aidan Delaney \u003caidan@phoric.eu\u003e and Olivier Dugeon for pointing\n  out the __STDC_IEC_559__ macro.\n\n  Update: GCC does not per se set __STDC_IEC_559__, so also test for\n  __GCC_IEC_559 \u003e\u003d 1.\n"
    },
    {
      "commit": "581ecbfe91d23791c116a8e3790208a17c1a5983",
      "tree": "c6087fe822be69a1b424b2453aa87ac30014ec5e",
      "parents": [
        "00667cea1fbd088900f7909f2044da2a7e26270d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:43 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: count iface up/down events and keep last time of their occurrence\n\nIt is quite useful to be able to assert whether specific interfaces have\nflapped or also to verify that specific interfaces have not flapped.\n\nBy having counters for those events and storing the last time of their\noccurrence, this is made possible.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "00667cea1fbd088900f7909f2044da2a7e26270d",
      "tree": "33044643861697f51f026938d24d87056ef5f37f",
      "parents": [
        "880e31ca2d8a8a8fcbc28bfeac9bd13fc76dd2c1"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:42 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: add event_counter\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "880e31ca2d8a8a8fcbc28bfeac9bd13fc76dd2c1",
      "tree": "bcaadd39adfb96a286d1ece6cc5bf8b27f0dad5d",
      "parents": [
        "2ab67a7591d7693bb726dd82795017c8c3f52d99"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:40 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: use constant to replace magic value for length of quagga_timestamp\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2ab67a7591d7693bb726dd82795017c8c3f52d99",
      "tree": "06b055b1e565c2e61f80f57d7a56dcb0af48b355",
      "parents": [
        "811577eaede8b6a7ea6ba3731c82eed1c4d07500"
      ],
      "author": {
        "name": "Pawel Wieczorkiewicz",
        "email": "pwieczorkiewicz@suse.de",
        "time": "Fri Apr 01 12:54:38 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "build: detect and create AM_SILENT_RULES macro if needed\n\nOlder libs have problem with that:\nconfigure.ac:17: warning: macro `AM_SILENT_RULES\u0027\n  not found in library\n...\nconfigure.ac:24: error: possibly undefined macro:\n   AM_SILENT_RULES\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "811577eaede8b6a7ea6ba3731c82eed1c4d07500",
      "tree": "b6b5ac6a5bc2248830e47e6a4ed044d7098cc38f",
      "parents": [
        "985c3556921fa669f86fe5e62130fbeb93d94ca9"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Mar 10 20:16:48 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Remove unnecessary parentheses\n\nThe freebsd compiler complains that there is an extra set of ()\u0027s\naround the if statement.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "985c3556921fa669f86fe5e62130fbeb93d94ca9",
      "tree": "0db825e0fbb0b0e1452e0169c6b36cd04c23b6cd",
      "parents": [
        "54406ac4c6883725f8a337bdc4f15fb015926b0f"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Mar 10 20:16:47 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "bgpd: Fix code path that leads to uninitialized variables\n\nsubtype and sublength are not initialized and if on Line 1877\nBGP_ATTR_ENCAP !\u003d type we will not set subtype and sublength,\nbut these variables are used immediately below that if statement.\n\nThis issue was discovered via the freebsd compiler.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "54406ac4c6883725f8a337bdc4f15fb015926b0f",
      "tree": "0044c1865642f3ad55f6b597f107167ca1b79e6d",
      "parents": [
        "1ad00b07a10eb8b3f5c94348488735fb08f28717"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:57 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Refactor thread_process_fd\n\nthread_process_fd is looping over the read and write\nfd\u0027s separately.  There is no need to do this individually.\nloop over both the read and write fdset\u0027s at the same time.\nThis will improve select processing performance, especially\nfor large data sets.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "1ad00b07a10eb8b3f5c94348488735fb08f28717",
      "tree": "a17cbf06ebd0dc639ca46a63de7727ac7c5c56ee",
      "parents": [
        "e0b8324deb490c52834775d2b805cbb57e003ce0"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Wed Jul 13 11:02:38 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Fix regression in thread.c\n\n* Fix regression introduced with merging of\n\n    \u0027lib: Refactor read/write functionality\u0027\n"
    },
    {
      "commit": "e0b8324deb490c52834775d2b805cbb57e003ce0",
      "tree": "4f4055d192a73ac02ce258fb00be829036923ca3",
      "parents": [
        "19be18a929c3afa343ac5435dba25f522e294d9b"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:56 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Refactor read/write functionality\n\nBoth the read and write functions used the same code\nslightly modified for reading and writing.  Combine this\ncode together.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n\nEdited-by: Paul Jakma \u003cpaul.jakma@hpe.com\u003e to retain the\nexternal library symbols, for ease of merging.\n"
    },
    {
      "commit": "19be18a929c3afa343ac5435dba25f522e294d9b",
      "tree": "ca2b656c0e8d24a9b3f50e482f65cb5fbc0cbf0e",
      "parents": [
        "6bcee414a487024e7865fb29d4e583870406d914"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:55 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: Abstract fd set operations\n\nAbstract FD set operations so that we can eventually\nchoose what type of select/poll operation that\nwe want to use.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetowkrs.com\u003e\n"
    },
    {
      "commit": "6bcee414a487024e7865fb29d4e583870406d914",
      "tree": "ae207533d9edeaec7277a2a3ae4768586e04879e",
      "parents": [
        "921936652359fe72728eb196aa9107310f02a4d4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Mar 12 19:58:09 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:37 2016 +0100"
      },
      "message": "lib: fix MIN/MAX macros to not double-eval\n\ncf. https://gcc.gnu.org/onlinedocs/gcc/Typeof.html\n(Works on all compilers on Quagga\u0027s compiler support list in\ndoc/overview.texi)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "921936652359fe72728eb196aa9107310f02a4d4",
      "tree": "76bfc9865bc9ee26e4f73999bcecf424dd649598",
      "parents": [
        "41de629c1fe88f9ea95d0400af6896f3c84a0dff"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Thu Jun 16 15:53:26 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:36 2016 +0100"
      },
      "message": "lib: keep hash of node\u0027s commands to detect duplicate installs\n\n* command.h: (struct cmd_node) Add a hash, so duplicate installs of\n  a cmd_element to a command node can be detected.  To help catch\n  strays from the VIEW/ENABLE node consolidation particularly\n  (installs to VIEW automatically install to ENABLE too now).\n* command.c: (cmd_hash_{key,cmp}) helpers for the hash - just directly\n  on the pointer value is sufficient to catch the main problem.\n  (install_node) setup the hash for the command node.\n  (install_element) check for duplicate installs.\n  The assert on the cmd_parse_format seems misplaced.\n  (install_default_basic) separate the basic, VIEW, node default commands\n  to here.\n  (cmd_init) get rid of dupes, given consolidation.\n  (cmd_terminate) clean up the node command hash.\n\nNot done: The (struct cmd_node)\u0027s vector could be replaced with the\ncmd hash, however much of the command parser depends heavily on the\nvector and it\u0027s a lot of work to change.  A vector_lookup_value could\nalso work, particularly if vector could be backed by a hash.\n\nThe duplicate check could be disabled in releases - but useful in\ndevelopment.  It\u0027s a little extra overhead at startup.  The command\ninitialisation overhead is already something that bites in\nmicro-benchmarks - makes it easy for other implementations to show\nhow much faster they are with benchmarks where other load is low\nenough that startup time is a factor.\n"
    },
    {
      "commit": "41de629c1fe88f9ea95d0400af6896f3c84a0dff",
      "tree": "5120035dc611715809cef786d4166ec0f8023016",
      "parents": [
        "68b45cc592d5d61e748e8d99ec9f84e63aa73213"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:41 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:36 2016 +0100"
      },
      "message": "lib: add api method to read current config path\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "68b45cc592d5d61e748e8d99ec9f84e63aa73213",
      "tree": "eb1008834813757b86e5f4bc439e7b2b3188adbf",
      "parents": [
        "b9ac2f320922542e0320ceeced4aa7264564e98a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 14:27:13 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "*: Consolidate all double VIEW_NODE and ENABLE_NODE\u0027s\n\nIf a command is put into the VIEW_NODE, it is going into the\nENABLE_NODE as well.  This is especially true for show commands.\nAs such if a command is in both consolidate it down to VIEW_NODE.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "b9ac2f320922542e0320ceeced4aa7264564e98a",
      "tree": "a5309dda6b12175879f99aa68b351b367ea8af08",
      "parents": [
        "4ab273bb60606ed681bee1be6fb2c8bb31dc26a7"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Mar 11 14:27:12 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "lib: Consolidate VIEW_NODE to be ENABLE_NODE as well\n\nIf you are in VIEW_NODE, the command should exist in ENABLE_NODE\nas well.  This is being done to reduce chances of code being\nadded to one but not the other NODE.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4ab273bb60606ed681bee1be6fb2c8bb31dc26a7",
      "tree": "0742982d0f484826bf983c1789ffb0cd080fe56b",
      "parents": [
        "0744040564ece3f4b9fe39fcf857e466a5f68a72"
      ],
      "author": {
        "name": "Denil Vira",
        "email": "denil@cumulusnetworks.com",
        "time": "Fri Mar 04 15:28:54 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "lib: Replace lists with arrays to store read and write threads\n\nWith arrays, a thread corresponding to given fd is looked up in constant time\nversus the linear time taken for list traversals.\n\nSigned-off-by: Denil Vira \u003cdenil@cumulusnetworks.com\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0744040564ece3f4b9fe39fcf857e466a5f68a72",
      "tree": "dc0fca27a603d845d153cccb95fd5b21ffa6429d",
      "parents": [
        "23757db11c5378521b7948847e17691f4fc35e0a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Thu Feb 25 07:39:45 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:33 2016 +0100"
      },
      "message": "vtysh: Add ability to only look at one processes work queue\n\nWhen examining performance information it is nice to not\nhave to look at daemons who you are not interested in.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReviewed-by: Don Slice \u003cdslice@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "23757db11c5378521b7948847e17691f4fc35e0a",
      "tree": "5b62d70b558c89ab751626e5b3f1a028a0be431e",
      "parents": [
        "7bd31774cf2c1cfaf74bca87f57f698e20a07e65"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Feb 24 06:26:02 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "*: get rid of \"MTYPE 0\"\n\nA few places are using 0 in place of the MTYPE_* argument.  The\nfollowing rewrite of the alloc tracking won\u0027t deal with that, so let\u0027s\nuse MTYPE_TMP instead.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "7bd31774cf2c1cfaf74bca87f57f698e20a07e65",
      "tree": "dd6edfc612c77e79138596dfe4070e0822797d77",
      "parents": [
        "47dd9af50d7fcf3ea25ebb8c8c4e9c4726a072f6"
      ],
      "author": {
        "name": "kitty",
        "email": "khiruthigai.balasubramanian@hpe.com",
        "time": "Thu Feb 18 21:33:40 2016 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "ospfd: fix non-zero metric when describing loopback addresses\n\nFixes Quagga Bugzilla #842\n\nChange-Id: Iff33d70089d1393bf3e9c757d9e9faf134699121\nSigned-off-by: kitty \u003ckhiruthigai.balasubramanian@hpe.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "47dd9af50d7fcf3ea25ebb8c8c4e9c4726a072f6",
      "tree": "c68cef6c3ba66351692ef54b9278dec11ca0bcdd",
      "parents": [
        "8b3ab1f1c8172ff7c77b382b6636c8e8314d7ebc"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 16 19:50:16 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "build/pimd: remove special shell scripts\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "8b3ab1f1c8172ff7c77b382b6636c8e8314d7ebc",
      "tree": "853af8245024d9e72b94ccd25a77414a4460751b",
      "parents": [
        "d869dbd03b4d75d512552d07ed8fbe0807272a9c"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Feb 16 19:50:15 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "isisd: fix assert warning\n\nicc (the Intel C Compiler) \"knows\" that assert() can be disabled by\nsetting specific optimisation flags, and therefore emits a warning about\nmissing a return value after an \"always-error\" assert.\n\nWorkaround by returning a value - this probably needs discussion and a\nbetter fix (for all places where the code needs to abort due to internal\nerrors).\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d869dbd03b4d75d512552d07ed8fbe0807272a9c",
      "tree": "2ade0de7288c4dd3fc68232708346881fd1a59fa",
      "parents": [
        "9da9a61e2f8afb61aa31c17fb810169290bf96ee"
      ],
      "author": {
        "name": "Udaya Shankara KS",
        "email": "shankara.k.s.u@gmail.com",
        "time": "Thu Feb 11 21:42:29 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "zebra: Enable fpm module to connect to remote fpm server\n\nFPM aims to provide cross platform mechanism to support the scenario\nwhere the router has forwarding path distinct fromt the kernel.Commonly\nHardware based fast path.Hence it is non-configurable paramter.This\nlimits us to use funcationality to update FIB information to remote\nhosts, like SDN controller.\n\nThis implementation provides the CLI to configure remote hosts and port\ninformation of remote fpm controller.Otherwise default fpm server will\nbe localhost and default fpm port will be well know port 2620.\n\n* zebra_fpm.c: added fpm_server paramter to zfpm_global_t handler.\n    Implemented CLI for configuring the fpm server and no fpm\n    command to revert back to default configuration.\n\n* zserv.c: Install zebra node to write fpm configuration info\n   on console/config file.\n\nFurther documentation supplied:\n-------------------------------\n\n               ZEBRA : CLI CONFIGURATION FOR FPM MODULE\n         \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n1. INTRODUCTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n   1.1 scope\n\n     This memo discusses the configuration option for zebra to update\n     FIB information to local and remote modules.\n     This will also helps to address the issue associated with CORD project.\n     https://jira.onosproject.org/browse/CORD-411\n\n2. REFERENCE\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  Quagga version 99.24+ ( main branch committed on 29-sep-2015)\n\n3. PROBLEM DESCRIPTION\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n    Once FPM is enabled, Quagga periodically tries to initiate fpm\nconnection to localhost:2620.  These values are non configurable in\nexisting implementation.  There is no CLI available to configure\n\"host:port\".  hence limits us to use it for hardware based fast path\nmodules only.\n\n4. PROPOSED CHANGES\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFollowing changes are done to the quagga code\n   a) Added new CLI to configure \"host address : port\".\n      The CLI format\n      \u003cconf t\u003e\n           $ fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n      and no fpm command to revert back to default\n      \u003cconf t\u003e\n           $ no fpm connection ip \u003cipv4 address\u003e port \u003ctcp port num\u003e\n\n   b) Allowed values are ipv4 address and tcp port range \u003c1-65535\u003e\n\n   c) FPM initialization code has been enhanced to pick the \"host\n      address : port\" values from zebra.conf.  if not found then\n      default values as localhost:2620 will be used.  and updated the\n      information on to config file on write config command\n\n5. FILES MODIFIED\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n  1) fpm/fpm.h :\n     a) Added MACRO to represent network order loopback ip\n\n  2) zebra/zebra_fpm.h :\n\n     a) introduced fpm_server variable in zfpm_glob_t handler to hold\n        the remote fpm server address\n\n     b) Hooked \u0027fpm_remote_ip_cmd\u0027 and \u0027no_fpm_remote_ip_cmd\u0027 at CONFIG\n        node to configure remote fpm detail and to revert back to\n        default respectively\n\n  3) zebra/zserv.c :\n     a) Hooked \u0027config_write_fpm\u0027 callback function, at ZEBRA_NODE to\n        display the fpm connection details on console on entering\n        command\n\n         $ show running_config\n        and to write to configuration file on entering command\n         $ write config\n\n6. TESTING DETAILS\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   6.1. default behavior\n\n          In default configuration FPM will attempt to connect to\n          localhost:2620\n\n   6.2. update fpm info\n        a) Using CLI command user can configure fpm host:port details\n           and can be able to write to config file(zebra.conf) using\n           write config command.  this parameters has no\n           dependency/impact on other parameters of config file\n\n        b) show running-config/write config will display the fpm\n           information if configured.  and will not display any\n           information related to fpm for default configuration\n\n        c) these configured information will be stored to config file.\n           only on write config command.\n\n   6.3 loading from config file\n        a) zebra attempts to connect to fpm server if fpm parameter\n           found in config file.else connects to default parameters.\n\n        b) if fpm connection drops, fpm will periodically attempts to\n           connect to remote server.\n\n        c) if fpm connections already established. then newly\n           configured fpm parameters will not disconnect the existing\n           connection.  new connection to the different fpm server will\n           happen only after existing connection closes by either of\n           the end.\n"
    },
    {
      "commit": "9da9a61e2f8afb61aa31c17fb810169290bf96ee",
      "tree": "e4cc5ca56f9a7498fab4120470303e680a43202e",
      "parents": [
        "071cfcd2e315499f0a4fa8c23779468eacc20033"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Feb 02 21:11:40 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "config: Remove unused library check\n\nconfigure.ac is looking for the setproctitle library,\nwhich while it might be useful, we never call setproctitle\nor any other function that the library might expose.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "071cfcd2e315499f0a4fa8c23779468eacc20033",
      "tree": "51ff82f6cd34c3a9ec2e6418830676f9c03c9558",
      "parents": [
        "9514fee4b37a9043738aa16ca8684993a1b572ad"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Feb 02 21:02:42 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "bgpd: Removed unused variable from \u0027struct attr_extra\u0027\n\nThe mp_nexthop_local_in variable is never used.  Remove it\nfrom the code base.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9514fee4b37a9043738aa16ca8684993a1b572ad",
      "tree": "715d5bfb6824dc213a3f0c98cf149bfb5e104ea7",
      "parents": [
        "3c964045459f66921f8a3dc33fe4c028e6b0b141"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Jan 26 11:44:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:32 2016 +0100"
      },
      "message": "bgpd, ripngd, zebra: Remove duplicate PSIZE define\n\nThe PSIZE macro is defined the same in multiple places.  Remove\nthe duplicates.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "3c964045459f66921f8a3dc33fe4c028e6b0b141",
      "tree": "e965c083d34feb5be294a51e2f0e18ff7d4fc527",
      "parents": [
        "687bea20fa61d8fc7cf48c0b227f16d0b324778c"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Jan 25 23:38:53 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Fix \u0027show bgp ipv4 vpnv4 statistics\u0027 cli.\n\nWhen attempting to use the \u0027show bgp ipv4 vpnv4 statistics\u0027 cli, the safi\nchoosen is BGP_MPLS_LABELED_VPN which is #defined to 128.  The afi/safi\ncombination is fed to bgp-\u003erib, which limits the size of the safi to BGP_SAFI_MAX\nwhich is #defined to 5.   The correct value to use is BGP_MPLS_VPN\n\nThe bgp code differentiates between the actual safi value for BGP_MPLS_LABELED_VPN\nused defined by RFC 4364, to a internal SAFI value used to limit array size.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "687bea20fa61d8fc7cf48c0b227f16d0b324778c",
      "tree": "14621b8d6c3e43e751b9f8ff166ad7490a2c1114",
      "parents": [
        "9145f0e4cf776bd3156620da6c8a772fee4d4383"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Mon Jan 25 14:56:26 2016 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "lib: Allow zclient do-over of connect on initial attempt\n\nWhen a protocol is attempting to connect to the zebra daemon\nthrough it\u0027s socket.  If the inital attempt fails, give it a\nfew more attempts before giving up and leaving the daemon in\na bizarre state.\n\nThis problem was found by Ashley Penney, and Ashley was of\nimmense help in debugging and testing the fix for this issue.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nTested-by: Ashley Penney \u003capenney@ntoggle.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9145f0e4cf776bd3156620da6c8a772fee4d4383",
      "tree": "9b8d99185c5755a5324ab859da422448ab88b6de",
      "parents": [
        "9c52caeaf40e32701ff79a721f0fee52cfcbd77c"
      ],
      "author": {
        "name": "Balaji",
        "email": "balajig81@gmail.com",
        "time": "Wed Jan 20 22:59:27 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Addition of bgp dampening configuration commands under IPv4/multicast\n\nSigned-off-by: Balaji Gurudoss \u003cbalajig81@gmail.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "9c52caeaf40e32701ff79a721f0fee52cfcbd77c",
      "tree": "60b3defc89ed5610e13eab46edb997d17e276be1",
      "parents": [
        "df2ef24fb73c83a6e733be9eb8cac3e0df8467f8"
      ],
      "author": {
        "name": "Balaji",
        "email": "balajig81@gmail.com",
        "time": "Wed Jan 20 22:59:26 2016 +0530"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "bgpd: Addition of dampening show commands under v4 unicast/multicast tree\n\nPatch contains addition of show ip bgp ipv4 (unicast| multicast)\ndampening tree.\n\nSigned-off-by: Balaji Gurudoss \u003cbalajig81@gmail.com\u003e\n"
    },
    {
      "commit": "df2ef24fb73c83a6e733be9eb8cac3e0df8467f8",
      "tree": "0d208e09a57754656de13c222d321ed8a8c47b05",
      "parents": [
        "543e791be9257e60d4d02abd0cdac7337a31636a"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:45 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "lib: Make distribute.c accepts both v4 and v6.\n\ndistribute.c doesn\u0027t allow to manage both v4 and v6 distribute lists.  This\npatch fix this problem by having 4 DISTRIBUTE* values in the enumeration instead\nof two. The code in all daemons using distribute.c is adapted.\n"
    },
    {
      "commit": "543e791be9257e60d4d02abd0cdac7337a31636a",
      "tree": "0110c7568215afddae497a4077dd767b28d233bc",
      "parents": [
        "fafa899b4e84c7b9fd07b076517744d9351aaa6b"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:44 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:31 2016 +0100"
      },
      "message": "ripngd: code simplification for redistribution.\n\nUse loops and variables instead of doing each cases by hand.\nUse boolean instead of having 2 almost identical functions.\n"
    },
    {
      "commit": "fafa899b4e84c7b9fd07b076517744d9351aaa6b",
      "tree": "bc6f6e0d4f60df5cb3eb41695f490ef62b570608",
      "parents": [
        "2074d6752d1dafcd6511677e2bdc9bbe0b73c388"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:43 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "ripd: code simplification for redistribution.\n\nUse loops and variables instead of doing each cases by hand.\nUse boolean instead of having 2 almost identical functions.\n"
    },
    {
      "commit": "2074d6752d1dafcd6511677e2bdc9bbe0b73c388",
      "tree": "bbbd02c455ae093426a6c478034471b6cf85cf7d",
      "parents": [
        "a3936d04942795bb92f04fefd25957c327e31c20"
      ],
      "author": {
        "name": "Matthieu Boutier",
        "email": "boutier@pps.univ-paris-diderot.fr",
        "time": "Wed Sep 10 16:50:42 2014 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "lib: simplify distribute.c\u0027s code.\n\nUse loops and variables instead of doing each cases by hand.\nUse static functions instead of rewriting code.\n"
    },
    {
      "commit": "a3936d04942795bb92f04fefd25957c327e31c20",
      "tree": "1d75c7ed70aa655c4cc0429264bfb1832afe8636",
      "parents": [
        "6184c39e27d4b6f3721b8c4dc3df1b968e09606a"
      ],
      "author": {
        "name": "Boian Bonev",
        "email": "bbonev@ipacct.com",
        "time": "Wed Jun 25 20:26:44 2014 +0300"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "bgpd: add aspath_aggregate_mpath that preserves path length\n\nIssue - when two aspaths are aggregated the result will be with\ndifferent length if the two paths do not share common prefix.\n\nE.g.: aggregation of 100 101 400 500 and 200 201 400 500 currently\nwill result in {100,101,200,201,400,500} which is of much shorter\nlength and is not ok to be readvertised becase may create shortest\npath on the internet and cause infinite flapping.\n\naspath_aggregate_mpath will construct the followin path for the\nabove example: {100,200} {101,201} 400 500\n\nSigned-off-by: Boian Bonev \u003cbbonev at ipacct.com\u003e\n\npatchwork #994: http://patchwork.quagga.net/patch/994/\n"
    },
    {
      "commit": "6184c39e27d4b6f3721b8c4dc3df1b968e09606a",
      "tree": "2307896d8cbec453b3d2c829c1b299d3d3f996e1",
      "parents": [
        "d8f7f86a64842fcc6200c2fa4f560b9aa7a279bb"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Mon Mar 17 14:01:42 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "bgpd: implement admin distance\n\nUntil today the admin distance cannot be configured for any IPv6\nrouting protocol. This patch implements it for bgp.\n\nSigned-off-by: Maitane Zotes \u003cmaz@open.ch\u003e\n\npatchwork #993: http://patchwork.quagga.net/patch/993/\n"
    },
    {
      "commit": "d8f7f86a64842fcc6200c2fa4f560b9aa7a279bb",
      "tree": "90da2b249a53228d99fed940373e3aa6b5039416",
      "parents": [
        "a0a661f982c4a9726573faf28817d77d3e7cdad5"
      ],
      "author": {
        "name": "Roman Hoog Antink",
        "email": "rha@open.ch",
        "time": "Wed Mar 05 09:13:43 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "ospf6d: implement admin distance\n\nUntil today the admin distance cannot be configured for any IPv6\nrouting protocol. This patch implements it for ospf6.\n\nSigned-off-by: Maitane Zotes \u003cmaz@open.ch\u003e\n"
    },
    {
      "commit": "a0a661f982c4a9726573faf28817d77d3e7cdad5",
      "tree": "70f836df1c739c044addd3c3e701fa031505ce92",
      "parents": [
        "a343cf8d74920752ba0e35142e23a3ca56620755"
      ],
      "author": {
        "name": "boris yakubov",
        "email": "borisyakubov@ruggedcom.com",
        "time": "Fri Apr 26 14:38:34 2013 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:30 2016 +0100"
      },
      "message": "isisd: Segmentation fault on isis daemon fixes\n\nI have a fix for 2 segmentation fault scenarios on the isis daemon:\n1. When running a command \"isis passive\" on an interface in the\nfollowing context:\n\"end\"\n\"configure terminal \"\n\"interface dummy0\"\n\"isis passive\"\nThe trace back collected:\nisis_adjacency.c:521\nfamily\u003d2,\n     root_sysid\u003d0x20aee6d0 \"\", parent\u003d0x20af4d68) at isis_spf.c:999\nsysid\u003d0x20aee6d0 \"\")\n     at isis_spf.c:1217\nisis_spf.c:1372\nisis_lsp.c:416\nisis_lsp.c:1660\nisis_main.c:368\n\nThe fix location:\nfile name: isisd/isis_adjacency.c\nroutine name: isis_adj_build_up_list\n\n2. When deleting the existing isis router instance:\n\"end\"\n\"configure terminal \"\n\"no router isis DEAD\"\n\nThe fix location:\nisisd/isis_events.c, routine circuit_resign_level\nisisd/isis_lsp.c, routine lsp_destroy\nisisd/isis_route.c, isis_route_validate\n\nThe trace back collection:\n\"DEAD\") at isisd.c:252\nargc\u003d1, argv\u003d0xbfc39054) at isisd.c:1520\nvty\u003d0x20d6f528, cmd\u003d0x0) at command.c:2121\ncmd\u003d0x0, vtysh\u003d0) at command.c:2155\nisis DEAD\") at vty.c:433\nisis_main.c:368\n\nand\n\n\"DEAD\") at isisd.c:260\nargc\u003d1, argv\u003d0xbfd6cf54) at isisd.c:1520\nvty\u003d0x208cb528, cmd\u003d0x0) at command.c:2121\ncmd\u003d0x0, vtysh\u003d0) at command.c:2155\nisis DEAD\") at vty.c:433\nisis_main.c:368\n\nThe patch is included.\n\npatchwork #833: http://patchwork.quagga.net/patch/833/\n"
    },
    {
      "commit": "a343cf8d74920752ba0e35142e23a3ca56620755",
      "tree": "1e74cf6e6d6216c8a9d3ea9c0a9fad5c4a4568a4",
      "parents": [
        "d319a3abbf6e6c310b6b6a6891ebe1957592f9a9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Jan 14 23:41:57 2013 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "lib: update Solaris multicast API (BZ#725)\n\nOn OpenIndiana/Solaris the build fails with \"unsupported multicast API\".\nIt\u0027s only in the IPv4 part where setsockopt IP_MULTICAST_IF needs a\nlocal address and not the index (IPv6 wants the index).\nThe following code walks the list of interfaces until it finds the matching\nindex and uses the interface\u0027s local address for the setsockopt call.\nI don\u0027t know if it works on Solaris \u003c 10 (I guess yes, but I don\u0027t have\nany machine to verify it).\n\n[NB: this breaks unnumbered setups that use the same IPv4 address on\nmultiple interfaces. -- equinox@opensourcerouting.org]\n\nReported-by: Brian Utterback \u003cbrian.utterback@oracle.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n\nPatchwork #762\n"
    },
    {
      "commit": "d319a3abbf6e6c310b6b6a6891ebe1957592f9a9",
      "tree": "44c54674d263c78032cd217a57a12350882a380d",
      "parents": [
        "86b2a0a12ace817e64e8e4a719b1ba9a8e6af253"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Wed May 25 14:47:00 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "ripd: split-horizon default differed between rip_interface_new and _reset\n\n* rip_interface.c: Default for split_horizon_default differed between\n  rip_interface_new and rip_interface_reset, causing at least some issues\n  after interface events. See patchwork #604. Fix, and consolidate code.\n\n  (rip_interface_{reset,clean}) rename these to \u0027interface\u0027, as that\u0027s more\n  appropriate.  Spin the ri specific bodies of these functions out to\n  rip_interface_{reset,clean} helpers.  Factor out the overlaps, so\n  rip_interface_reset uses rip_interface_clean.\n\n  (rip_interface_new) just use rip_interface_reset.\n\n* ripd.h: Update for (rip_interface_{reset,clean})\n\nReported by xufeng zhang, with a suggested fix on which this commit expands.\nSee patchwork #604.  This commit addresses only the split-horizon\ndiscrepency, issue #2.  The other issue they reported, #1, is not addressed,\nthough suggested fix seems inappropriate.\n\nCc: xufeng.zhang@windriver.com\n"
    },
    {
      "commit": "86b2a0a12ace817e64e8e4a719b1ba9a8e6af253",
      "tree": "d077de18b7d595f88dc4fb423a5dba91f8650741",
      "parents": [
        "f53585d59b62b12d68282154af346796b75c7f2f"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 12:19:51 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "lib: change command logging to be off by default\n\n* lib/vty.c: add \u0027log_command\u0027 to enable logging of vty commands executed.\n  Default command logging to off.\n"
    },
    {
      "commit": "f53585d59b62b12d68282154af346796b75c7f2f",
      "tree": "23c84a60e16058427c069f0a406ff8f44f73b19b",
      "parents": [
        "ac6ff4643645315db648604771926218aa4ead2d"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:36 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "bgp: add \"debug bgp allow-martians\" next hops and related code/commands\n"
    },
    {
      "commit": "ac6ff4643645315db648604771926218aa4ead2d",
      "tree": "39a8c4f4910060019b2d6df9c944eb456f1d9579",
      "parents": [
        "5f678889843fb9bc3f07d05eebc2f8fb35584a91"
      ],
      "author": {
        "name": "Lou Berger",
        "email": "lberger@labn.net",
        "time": "Tue May 17 07:10:37 2016 -0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 20 12:58:29 2016 +0100"
      },
      "message": "bgpd: Add flag to not change e{u,g}id on startup and run as unprivileged user\n\n* bgp_main.c: add -S / --skip_runas flag to not change effective user/group\n  on start up.  Enables bgpd to be run by unprivileged user.\n"
    },
    {
      "commit": "5f678889843fb9bc3f07d05eebc2f8fb35584a91",
      "tree": "284e203bd4345265fae0648bbdd54460171951f0",
      "parents": [
        "aef4650851cf0f74d944466d50e26bb8f8635c3d"
      ],
      "author": {
        "name": "Igor Ryzhov",
        "email": "iryzhov@nfware.com",
        "time": "Fri Apr 22 17:38:24 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:48:45 2016 -0400"
      },
      "message": "zebra: add missing vty commands\n\nSigned-off-by: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "aef4650851cf0f74d944466d50e26bb8f8635c3d",
      "tree": "0fa32e61bc3c9d715247091fd3003690b3e056a1",
      "parents": [
        "bb01bdd740339b0c07d8ed0786811801b2a79192"
      ],
      "author": {
        "name": "Stas Nichiporovich",
        "email": "stas@iptel.by",
        "time": "Tue Apr 26 08:14:36 2016 +0000"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:46:16 2016 -0400"
      },
      "message": "zebra: fix crash caused by using route-map with \"set src\"\n\nSigned-off-by: Stas Nichiporovich \u003cstas@iptel.by\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "bb01bdd740339b0c07d8ed0786811801b2a79192",
      "tree": "946ffe458cc4ebea09407394b880443d0ed8f98b",
      "parents": [
        "e6ec2d6d18dadb119b93284ef2f5f5b5440d6f66"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Apr 21 16:22:33 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 29 19:31:49 2016 -0400"
      },
      "message": "ospfd: fix - correct neighbor index on changing/p2p/virtual links\n\nospfd keeps a list of neighbor routers for each configured interface. This\n list is indexed using the neighbor router id in case of point-to-point and\n virtual link types, otherwise the list is indexed using the neighbor\u0027s\n source IP (RFC 2328, page 96). The router adds itself as a \"pseudo\" neighbor\n on each link, and also keeps a pointer called (nbr_self) to the neighbor\n structure. This takes place when the interface is first configured. Currently\n ospfd adds this pseudo neighbor before the link parameters are fully configure,\n including whether the link type is point-to-point or virtual link. This causes\n the pseudo neighbor to be always indexed using the source IP address regardless\n of th link type. For point-to-point and virtual links, this causes the lookup\n for the pseudo neighbor to always fail because the lookup is done using the\n router id whereas the neighbor was added using its source IP address.\n This becomes really problematic if there is a state change that requires a\n rebuild of nbr_self, changing the router id for example. When resetting\n nbr_self, the router first tries to remove the pseudo neighbor form its\n neighbor list on each link by looking it up and resetting any references to it\n before freeing the neighbor structure. since the lookup fails to retrieve any\n references in the case of point-to-point and virtual links the neighbor\n structure is freed leaving dangling references to it. Any access to the\n neighbor list after that is bound to stumble over this dangling pointer\n causing ospfd to crash.\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "e6ec2d6d18dadb119b93284ef2f5f5b5440d6f66",
      "tree": "96202e2ff5a78834986e3dd35dce947bbca1f335",
      "parents": [
        "190591f0fe3388c746ea48f69a439f4bd0b49834"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 08 19:30:51 2016 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:38:54 2016 -0400"
      },
      "message": "lib: Fix priviledge modification for vty group specified\n\nWhen attempting to switch runtime permissions over to\nthe correct group specified for the vty group, if the\nuser specified to run as does not have that vty group\nthen do warn about the issue and stop running\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReported-by: Thomas Martin \u003ctmartincpp@gmail.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "190591f0fe3388c746ea48f69a439f4bd0b49834",
      "tree": "de1420f8f017c3e36b5ce6233d01af4f75960c9e",
      "parents": [
        "80f61a9979079ed16b9eff50ba65ad8bf1b15fb6"
      ],
      "author": {
        "name": "Jafar Al-Gharaibeh",
        "email": "jafar@atcorp.com",
        "time": "Thu Apr 21 17:40:12 2016 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:37:53 2016 -0400"
      },
      "message": "zserv: [pimd] fix - avoid dereferencing a NULL pointer\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "80f61a9979079ed16b9eff50ba65ad8bf1b15fb6",
      "tree": "886c30e2570dc6f5117c7dbf353de023524b0309",
      "parents": [
        "7e73eb740f3c52a5b7c0ae9c2cd33b486d885552"
      ],
      "author": {
        "name": "Jonathan Hart",
        "email": "jono@onlab.us",
        "time": "Tue Apr 19 22:13:49 2016 -0700"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:37:25 2016 -0400"
      },
      "message": "pimd: Fix hang when doing nexthop lookup from zebra\n\nI was running in to a bug when pimd would hang in some cases when\nit had to do a nexthop lookup from zebra, such as when a PIM JOIN\nwas received. This issue could be easily reproduced by running\n\u0027show ip rib \u003cip\u003e\u0027 from the pimd vty which forces a nexthop lookup.\n\nThe issue is in zclient_read_nexthop, the zclient_read_header function\nreads the message content into the stream, but then after that the\nzclient_read_nexthop function tries to read the message content again\nfrom the socket, but there are no bytes so it hangs waiting for input.\nThe solution is to not try to read the message content the second time.\nAcked-by: Jafar Al-Gharaibeh\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "7e73eb740f3c52a5b7c0ae9c2cd33b486d885552",
      "tree": "610292c5f4b071790a9fba7bcd77f68934a31809",
      "parents": [
        "7e7a101dde5969f62074801d84bb4cc75e50f548"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Sat Apr 09 17:22:32 2016 +0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:36:40 2016 -0400"
      },
      "message": "zebra: handle multihop nexthop changes properly\n\nThe rib entries are normally added and deleted when they are\nchanged. However, they are modified in placae when the nexthop\nreachability changes. This fixes to:\n - properly detect nexthop changes from nexthop_active_update()\n   calls from rib_process()\n - rib_update_kernel() to not reset FIB flags when a RIB entry\n   is being modifed (old and new RIB are same)\n - improves the \"show ip route \u003cprefix\u003e\" output to display\n   both ACTIVE and FIB flags for each nexthop\n\nFixes: 325823a5 \"zebra: support FIB override routes\"\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nReported-By: Igor Ryzhov \u003ciryzhov@nfware.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "7e7a101dde5969f62074801d84bb4cc75e50f548",
      "tree": "ac1ba465edce3956ba12ef87f1f3dd7c60be9322",
      "parents": [
        "e7207098c0fa88af6899c1b1483e3ddb19f5336a"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 08 22:03:22 2016 -0400"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:35:33 2016 -0400"
      },
      "message": "ripd: Fix Null pointer dereference\n\nThe rip_output_process function dereferenced a NULL\npointer.  Core file examination showed that tmp_rinfo\nwas NULL on line 2435.  Looking at the last diff\nassociated with this commit, it was obvious that\na formating mistake had been made in the loop over\nthe route nodes list of possible paths.\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\nReported-by: Sebastian Kricner \u003csebastian.kricner@tuxwave.net\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "e7207098c0fa88af6899c1b1483e3ddb19f5336a",
      "tree": "5df0525bedfed10c2380d191c550c81943d5e3cd",
      "parents": [
        "84a4da039fa620942b6c3a9ff21b7502803f53be"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:28 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:34:08 2016 -0400"
      },
      "message": "isisd: ignore unknown interfaces when adjusting IS-IS mtu\n\nFor example during startup of isisd, the MTU of interfaces is not\nknown, since this information will only be available once the\ninterfaces have been learned from zebra.\n\nIt makes no sense to include the MTU 0 that is stored for interfaces\nin this state in the consideration whether a new lsp-mtu for an\narea is valid, so skip interfaces which are in this state.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "84a4da039fa620942b6c3a9ff21b7502803f53be",
      "tree": "e08768425d8bd46c3b34f24886cec8753e84d101",
      "parents": [
        "8ed8d0b5d1596ec9a6cce5ca45eb1cb1dff94978"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:27 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:34:01 2016 -0400"
      },
      "message": "isisd: make sure that all interface addresses are advertised\n\nIf the following configuration commands are run interactively in\nsuccession, the ipv6 addresses of this interface won\u0027t be advertised\nin the router\u0027s LSP immediately:\n\n   # interface eth0\n   # ip router isis test\n   # ipv6 router isis test\n\nThis is because the ipv6 router command won\u0027t trigger a state change\nfor the interface and therefore, it won\u0027t trigger a regeneration of\nthe LSPs.\n\nThe same thing happens if IPv4 is enabled after IPv6, or for the cases\nwhere IPv4 is disabled and IPv6 stays enabled or vice-versa.\n\nFix this by explicitly calling lsp_regenerate_schedule for the cases\nwhere it won\u0027t be called implicitly.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "8ed8d0b5d1596ec9a6cce5ca45eb1cb1dff94978",
      "tree": "645a36cc091c6ab5d8ec6c8003d42c2085510a2f",
      "parents": [
        "106e38e4d42ecd94c083907872d514e8c67036f6"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:26 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:33:54 2016 -0400"
      },
      "message": "isisd: fix a crash due to an lsp-mtu issue\n\nisisd crashed on startup if it was enabled for an interface with\na too small MTU.\n\nTo fix this, we treat this case as an invalid configuration and\ndisable isis on that interface if that case happens, since it is\na configuration error.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    },
    {
      "commit": "106e38e4d42ecd94c083907872d514e8c67036f6",
      "tree": "62bbf4b4203df99f92672f91cd361aa6f055a4df",
      "parents": [
        "86c5d2ee68f7b9c00ae4aeb5c8b3c5d82c5ebffc"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Sun Apr 03 12:46:25 2016 -0300"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Apr 22 08:33:46 2016 -0400"
      },
      "message": "isisd: work around route table asserts for deleting node with info\n\nThe route table code in lib/table.c triggers an assertion when a route\nnode with rn-\u003einfo !\u003d NULL reaches refcount 0, probably to avoid\nmemleaks. In this particular case, this is not an issue, since the\ninfo will be freed by the destructor.\n\nHowever, since removing this assertion probably requires more\ndiscussion, just make sure that rn-\u003einfo gets freed and unset before\nits refcount is decremented to zero.\n\nSigned-off-by: Christian Franke \u003cnobody@nowhere.ws\u003e\n"
    }
  ],
  "next": "86c5d2ee68f7b9c00ae4aeb5c8b3c5d82c5ebffc"
}
