)]}'
{
  "log": [
    {
      "commit": "b6404390a713144252b62f49a328315d1952c6d8",
      "tree": "5a1662864effa82f5ed60b853401407d3d73ed9e",
      "parents": [
        "b075e8728f650b0850e20fdf8dde467440a24b28"
      ],
      "author": {
        "name": "Fernando Soto",
        "email": "fsoto@bluecatnetworks.com",
        "time": "Mon May 11 20:52:00 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:41 2015 +0100"
      },
      "message": "ospfd: trap on state change seems to send incorrect value for ospfNbrState\n\nThe ospfNbrState in the ospf trap sent from ospfd shows an incorrect state.\n\nFor example, when the connection goes down, the ospfNbrState in the trap is\nsent as \u00278\u0027 (full).  When the connection is reestablished, the state is sent\nas \u00277\u0027 (loading).\n\nThe reason seems to be that the trap is sent from nsm_notice_state_change()\nbefore the state is actually updated by calling nsm_change_state().\n\nAfter applying the attached patch, the traps are sent with nbrState \u00271\u0027 when\nthe connection goes down and \u00278\u0027 when it goes back up.\n\nBugzilla #833 https://bugzilla.quagga.net/show_bug.cgi?id\u003d833\n"
    },
    {
      "commit": "b075e8728f650b0850e20fdf8dde467440a24b28",
      "tree": "62966835f757e550e6e78e08611f3b4f49a64ecd",
      "parents": [
        "2ef762ed9b88e5745012c5829f8f526c95443ddf"
      ],
      "author": {
        "name": "Vystoropskyi, Sergii",
        "email": "vistorop@amazon.com",
        "time": "Sun Aug 16 13:25:36 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:41 2015 +0100"
      },
      "message": "ospfd: Fix for \u0027no\u0027 + \u0027debug command\u0027 does not disable \u0027debug command\u0027\n\n\"no debug ospf packet all detail\" does not cancel \"debug ospf packet all detail\"\ndue to the code inconsistency in setting/unsetting debug flags.\n\n* ospf_dump.c: added missing flags.\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2ef762ed9b88e5745012c5829f8f526c95443ddf",
      "tree": "8b2867c9c5938551f7e86881104dad61be3f18b6",
      "parents": [
        "c920e510d09c6c4ab63a3da5375009442a950f82"
      ],
      "author": {
        "name": "Michael Rossberg",
        "email": "michael.rossberg@tu-ilmenau.de",
        "time": "Mon Jul 27 07:56:25 2015 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:41 2015 +0100"
      },
      "message": "ospfd: Fast OSPF convergence\n\nWhen considering small networks that have extreme requirements on\navailability and thus convergence delay, the timers given in the OSPF RFC\nseem a little “conservative”, i.e., the delay between accepted LSAs and the\nrate at which LSAs are sent.  Cisco introduced two commands \u0027timers throttle\nlsa all’ and \u0027timers lsa arrival’, which allow operators to tune these\nparameters.\n\nI have been writing a patch to also support \u0027timers lsa arrival’ fully and\n‘timers throttle lsa all’ (without the throttling part) also in quagga.\n"
    },
    {
      "commit": "c920e510d09c6c4ab63a3da5375009442a950f82",
      "tree": "4ef39abc6d53eed748cd7898621dae21a776e550",
      "parents": [
        "794c4735f81289d9fc603b5fd5e4a5d39dbb5ca5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Tue Sep 08 15:31:45 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:41 2015 +0100"
      },
      "message": "ospfd: Fix bug in 94266fa822ba, nbr_self rebuild didn\u0027t add valid nbr_self\n\n* 94266fa822ba \"ospfd: Self nbrs needs to be rebuilt when router ID changes.\"\n  deleted the nbr_self, and added it back, but ospf_nbr_add_self doesn\u0027t\n  actually create the nbr_self - it assumes it\u0027s already there. Leading\n  to use after free and crashes after a router-id change.\n* ospfd/ospf_neighbor.{c,h}: (ospf_nbr_self_reset) Little helper to reset the\n  nbr_self correctly.\n* ospf_interface.c: (ospf_if_cleanup) moved code to ospf_nbr_self_reset\n* ospfd.c: (ospf_router_id_update) Use ospf_nbr_self_reset instead of doing\n  the reset badly, fixing 94266fa822ba.\n"
    },
    {
      "commit": "a29c8a23a35b3f94c6aea5b3b7578b5dbf81ad71",
      "tree": "3308184cd4316dcf42a496ff16e0ea2dad8f15d5",
      "parents": [
        "52c0bc739b1184621525e64720b944268d6b0eeb"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Mon Sep 21 10:26:02 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 24 15:26:41 2015 +0100"
      },
      "message": "Revert \"ospfd: Use route_node_lookup() instaed of route_node_get()\"\n\nThis reverts commit c9b07581e0df8867499e97e08b382b6d3cc9c4c4.\n\nSee: http://patchwork.quagga.net/patch/410/\n"
    },
    {
      "commit": "c9b07581e0df8867499e97e08b382b6d3cc9c4c4",
      "tree": "5cf4a31ba7e152a706a72b32b32939d265e8d426",
      "parents": [
        "8b84c2762ccd2d47a115824ee083d33e697a7741"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:11 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 04 16:39:27 2015 +0100"
      },
      "message": "ospfd: Use route_node_lookup() instaed of route_node_get()\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "4de398e3b676bcf041984e285dba12f229215419",
      "tree": "e06791bda93d63d30f9187c5df8064f0f1fa9f29",
      "parents": [
        "4eaecdc403461fe59026e1ce3a217526d75eca25"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:14 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:43:08 2015 +0100"
      },
      "message": "ospfd: ospf_nbr_nbma_set()/ospf_snmp_vl_add() add unlock\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "4eaecdc403461fe59026e1ce3a217526d75eca25",
      "tree": "fcb6ae38db620f25a5931a1867c48c0396d5d564",
      "parents": [
        "fc363cd8a02ad1ac8a6ca57013fd8c531d45926a"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:13 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:43:03 2015 +0100"
      },
      "message": "ospfd: ospf_ls_upd_send() add missing unlock.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "fc363cd8a02ad1ac8a6ca57013fd8c531d45926a",
      "tree": "fc821d3992d87c8b85d244ceece7f004f8a06f72",
      "parents": [
        "d5643f5a477e099a3dcae4a707ccb5ca66bfee66"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:12 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:42:58 2015 +0100"
      },
      "message": "ospfd: ospf_ase.c, external_lsa locking fixes.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "d5643f5a477e099a3dcae4a707ccb5ca66bfee66",
      "tree": "9c82ee88bc3173ca327f392e13862300d76f6148",
      "parents": [
        "fbb6c8650344fe72d39f538c681659e8b76a39d0"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:10 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:42:54 2015 +0100"
      },
      "message": "ospfd: Move route_unlock_node() in ospf_ase_incremental_update()\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "fbb6c8650344fe72d39f538c681659e8b76a39d0",
      "tree": "0b896f15681a030f69d42ab7b8c061c0ee3627b5",
      "parents": [
        "94266fa822baf9b9c9e10ac03ccec8ccf3ce0c98"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Mar 08 13:58:09 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:42:45 2015 +0100"
      },
      "message": "ospfd: add missing unlock for ospf_interface_address_delete()\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "94266fa822baf9b9c9e10ac03ccec8ccf3ce0c98",
      "tree": "61cc2746b57155d6ba932aa6bdde44a40cb8d4e8",
      "parents": [
        "7f56743f7d4b3dcdae329de2de2aba820368c3d9"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Thu Nov 19 15:27:30 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jul 29 21:40:32 2015 +0100"
      },
      "message": "ospfd: Self nbrs needs to be rebuilt when router ID changes.\n\nSome self nbrs are identified by router_id, these needs\nto be rebuilt instead of just resetting router ID.\nPossibly one could optimize for !(virtual | ptop) links\nby doing oi-\u003enbr_self-\u003erouter_id \u003d router_id instead.\n\nRouter ID will change once after startup config has been\nread and zebra reports router ID, unless router ID has\nbeen configured in ospf.\n"
    },
    {
      "commit": "c99f3481a598e9cadd1de96714f6b5df9ad85c4a",
      "tree": "aac6df566f28c13fce5c9f02275f159fab73a24d",
      "parents": [
        "758fb8f99a7bfac3d31c419fd1a5694fc5f33f6a"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Thu Oct 16 09:52:36 2014 +0800"
      },
      "committer": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Wed Jun 03 10:24:12 2015 +0200"
      },
      "message": "*: add VRF ID in the API message header\n\nThe API messages are used by zebra to exchange the interfaces, addresses,\nroutes and router-id information with its clients. To distinguish which\nVRF the information belongs to, a new field \"VRF ID\" is added in the\nmessage header. And hence the message version is increased to 3.\n\n* The new field \"VRF ID\" in the message header:\n\n    Length    (2 bytes)\n    Marker    (1 byte)\n    Version   (1 byte)\n    VRF ID    (2 bytes, newly added)\n    Command   (2 bytes)\n\n  - Client side:\n\n    - zclient_create_header() adds the VRF ID in the message header.\n    - zclient_read() extracts and validates the VRF ID from the header,\n      and passes the VRF ID to the callback functions registered to\n      the API messages.\n    - All relative functions are appended with a new parameter \"vrf_id\",\n      including all the callback functions.\n    - \"vrf_id\" is also added to \"struct zapi_ipv4\" and \"struct zapi_ipv6\".\n      Clients need to correctly set the VRF ID when using the API\n      functions zapi_ipv4_route() and zapi_ipv6_route().\n    - Till now all messages sent from a client have the default VRF ID\n      \"0\" in the header.\n    - The HELLO message is special, which is used as the heart-beat of\n      a client, and has no relation with VRF. The VRF ID in the HELLO\n      message header will always be 0 and ignored by zebra.\n\n  - Zebra side:\n\n    - zserv_create_header() adds the VRF ID in the message header.\n    - zebra_client_read() extracts and validates the VRF ID from the\n      header, and passes the VRF ID to the functions which process\n      the received messages.\n    - All relative functions are appended with a new parameter \"vrf_id\".\n\n* Suppress the messages in a VRF which a client does not care:\n\n  Some clients may not care about the information in the VRF X, and\n  zebra should not send the messages in the VRF X to those clients.\n\n  Extra flags are used to indicate which VRF is registered by a client,\n  and a new message ZEBRA_VRF_UNREGISTER is introduced to let a client\n  can unregister a VRF when it does not need any information in that\n  VRF.\n\n  A client sends any message other than ZEBRA_VRF_UNREGISTER in a VRF\n  will automatically register to that VRF.\n\n  - lib/vrf:\n\n    A new utility \"VRF bit-map\" is provided to manage the flags for\n    VRFs, one bit per VRF ID.\n\n    - Use vrf_bitmap_init()/vrf_bitmap_free() to initialize/free a\n      bit-map;\n    - Use vrf_bitmap_set()/vrf_bitmap_unset() to set/unset a flag\n      in the given bit-map, corresponding to the given VRF ID;\n    - Use vrf_bitmap_check() to test whether the flag, in the given\n      bit-map and for the given VRF ID, is set.\n\n  - Client side:\n\n    - In \"struct zclient\", the following flags are changed from\n      \"u_char\" to \"vrf_bitmap_t\":\n          redist[ZEBRA_ROUTE_MAX]\n          default_information\n      These flags are extended for each VRF, and controlled by the\n      clients themselves (or with the help of zclient_redistribute()\n      and zclient_redistribute_default()).\n\n  - Zebra side:\n\n    - In \"struct zserv\", the following flags are changed from\n      \"u_char\" to \"vrf_bitmap_t\":\n          redist[ZEBRA_ROUTE_MAX]\n          redist_default\n          ifinfo\n          ridinfo\n\n      These flags are extended for each VRF, as the VRF registration\n      flags. They are maintained on receiving a ZEBRA_XXX_ADD or\n      ZEBRA_XXX_DELETE message.\n\n      When sending an interface/address/route/router-id message in\n      a VRF to a client, if the corresponding VRF registration flag\n      is not set, this message will not be dropped by zebra.\n\n    - A new function zread_vrf_unregister() is introduced to process\n      the new command ZEBRA_VRF_UNREGISTER. All the VRF registration\n      flags are cleared for the requested VRF.\n\n  Those clients, who support only the default VRF, will never receive\n  a message in a non-default VRF, thanks to the filter in zebra.\n\n* New callback for the event of successful connection to zebra:\n\n  - zclient_start() is splitted, keeping only the code of connecting\n    to zebra.\n\n  - Now zclient_init()\u003d\u003ezclient_connect()\u003d\u003ezclient_start() operations\n    are purely dealing with the connection to zbera.\n\n  - Once zebra is successfully connected, at the end of zclient_start(),\n    a new callback is used to inform the client about connection.\n\n  - Till now, in the callback of connect-to-zebra event, all clients\n    send messages to zebra to request the router-id/interface/routes\n    information in the default VRF.\n\n    Of corse in future the client can do anything it wants in this\n    callback. For example, it may send requests for both default VRF\n    and some non-default VRFs.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "126215c1238eb42cc92d23aefbe1fac3b204438f",
      "tree": "22910b50f39003e297efc6236711581cbf3b2ada",
      "parents": [
        "2fc97f6335dd5d7df2c285b363c6ef56bb98dcf8"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:39:58 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 06:58:12 2015 +0200"
      },
      "message": "*: call if_init()/if_terminate() from vrf_init()/vrf_terminate()\n\nLater, an interface will belong to a specific VRF, and the interface\ninitialization will be a part of the VRF initialization. So now call\nif_init() from vrf_init(), and if_terminate() from vrf_terminate().\n\nDaemons have the according changes:\n- if if_init() was called or \"iflist\" was initialized, now call\n  vrf_init() instead;\n- if if_terminate() was called or \"iflist\" was destroyed, now call\n  vrf_terminate() instead.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "219cdc95d93eda93240d472814ef4aa8bd36b039",
      "tree": "9f39dc298398ff012dc2243ec40a9a4bd4af3d05",
      "parents": [
        "f1fc327c7eb00634d2c2b08c2a6f6e44a626ef04"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Jan 23 16:43:49 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu May 14 18:09:55 2015 +0100"
      },
      "message": "ospfd: Remove another odd flooding hack in opaque LSA code\n\n* ospf_opaque.c: (ospf_opaque_adjust_lsreq) Odd hack to general OSPF\n  database exchange but made to act only on opaque LSAs. It\u0027s either covering\n  up bugs in the flooding code or its wrong. If it\u0027s covering up bugs, those\n  would affect all LSAs and should be fixed at a lower layer in ospfd, indeed\n  perhaps those bugs are long fixed anyway (?). Alternatively, it\u0027s just plain\n  wrong. Nuke.\n  (ospf_opaque_exclude_lsa_from_lsreq) helper to above, nuke.\n* ospf_packet.c: Nuke call to ospf_opaque_adjust_lsreq.\n\nTested-by: olivier.dugeon@orange.com\n"
    },
    {
      "commit": "e66cbd10d52a79fd61acab9d615683eebdbf1df5",
      "tree": "e81be2319e7b2c485354283f025e090bb56c8754",
      "parents": [
        "4584c239201037648abf1a6615186f9cdeb86b23"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Apr 13 10:21:34 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 15:06:22 2015 +0200"
      },
      "message": "lib: hide internal prefix list structures\n\nThese are about to be touched and there\u0027s no point in other code\ntouching into prefix list\u0027s internas.  Add some isolation.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e30677a5537f67e37938954cf7347e9a9c0b922d",
      "tree": "0fe90b1574293ff61d3088aef2e6b3b1b03170a0",
      "parents": [
        "e1bcd4741c24ff990a9413ead9a9e37b80153046"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue Jan 20 15:45:36 2015 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 05 13:02:11 2015 +0100"
      },
      "message": "ospfd: Remove the blocking of opaque LSAs origination \u0026 flooding \u0027optimisation\u0027\n\n* Opaque support contains some kind of hack/optimisation to\n  origination/flooding to suppress some origins/floods until an opaque LS\n  Acks are received.  Previous versions of the code have already been shown\n  to have bugs in them (see e16fd8a5, e.g.). It seems over-complex and fragile,\n  plus its conceptually the wrong place to try implement flooding hacks that,\n  AFAICT, do not depend particularly on the semantics of opaque LSA.\n\n  Nuke.\n\nTested-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "e1bcd4741c24ff990a9413ead9a9e37b80153046",
      "tree": "945ee904f65bc18eb3c2d03f6dd225e9d3b25938",
      "parents": [
        "10bac80195cf5a781da6e4415e6580fd7080f734"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Sep 19 16:41:10 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue May 05 12:51:43 2015 +0100"
      },
      "message": "ospfd: Make ospf_passive_interface_update calls friendly to static analysis\n\n* ospf_vty.c: ({no_}ospf_passive_interface_addr_cmd) To a static analyser,\n  the call to ospf_passive_interface_update can look like uninitialised memory\n  in addr might be read from. It won\u0027t be, as ospf_passive_interface_update\n  only reads addr if params !\u003d IF_DEF_PARAMS, but not clear. Split up the\n  helper into the two cases to make it clear.\n"
    },
    {
      "commit": "c0bedebfe9ca1a1ded02f1f481762dd41defa63e",
      "tree": "9c040f71733fb7509c03457bc146373e65e95536",
      "parents": [
        "3a7e83c2387885075c9ecf1912dd6c9399c6947a"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 10:00:43 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:33 2015 +0200"
      },
      "message": "build: add --enable-werror\n\nThis allows enabling -Werror in a consistent way.  Note that this is\ndifferent from just specifiying it in CFLAGS, since that would either\nbreak configure tests (if done on ./configure), or would override\nconfigure\u0027s CFLAGS (if done on make).\n\nUsing --enable-werror instead provides a new WERROR variable that is\nadditionally used during make with a consistent set of warning flags.\n\nThe tests/ directory is exempt.  (Rationale being, better to have more\ntests than pedantically complain about them.)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "dfee58f1d41a2e36c7f5f38a3ef5712224131824",
      "tree": "10e588443180a85a6ac019db1ded6b1144f32a7c",
      "parents": [
        "6769f43de9d595b935f2ebf1cae1428e1d1a3a5f"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Mar 04 06:44:57 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:19:10 2015 +0200"
      },
      "message": "snmp: fix warnings\n\nbatch-fix all warnings that come up when enabling AgentX SNMP support.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ab90fc04a57b7b1d93ccddb8c9fbbf339a7ffc4c",
      "tree": "7c75add9b86f59da16d636e963402494dfbf6ecd",
      "parents": [
        "388f8857eb81ef75014060976776523a58a99389"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 09:07:25 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:18:01 2015 +0200"
      },
      "message": "*: add/cleanup initialisers\n\nThere were some (inconsequential) warnings about uninitialised use of\nvariables.  Also, in one case, sub-structs were mixed in initialisation,\nwhich doesn\u0027t quite work as intended.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "eed3c48d3a7d2dae2cae2f2f250deffb843754a6",
      "tree": "07b2252438225065024d4a534eddf0e86c9b87a4",
      "parents": [
        "ef008d2f8dc8f7160d8a3d24a15f2fad79ef3242"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:51:53 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:17:31 2015 +0200"
      },
      "message": "*: use void * for printing pointers\n\nOn higher warning levels, compilers expect %p printf arguments to be\nvoid *.  Since format string / argument warnings can be useful\notherwise, let\u0027s get rid of this noise by sprinkling casts to void *\nover printf calls.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ef008d2f8dc8f7160d8a3d24a15f2fad79ef3242",
      "tree": "036d3b4c7bc0071f045bc1cb3a54c422dffc1806",
      "parents": [
        "ec62e1438ece9af0546f9028aa1403f2c84bf177"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:48:11 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Apr 19 20:40:19 2015 +0200"
      },
      "message": "*: use long long to print time_t\n\nSince we can\u0027t assume time_t to be long, int, or even long long, this\nconsistently uses %lld/long long (or %llu/unsigned long long in a few\ncases) to print time_t/susecond_t values.  This should fix a bunch of\nwarnings, on NetBSD in particular.\n\n(Unfortunately, there seems to be no \"PRId64\" style printing macro for\ntime_t...)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "237aac56960575f6ad2451ba2796d94bd5ae4b33",
      "tree": "f23c49fa32bc6b706bd5f37a9a3a45ce27adf15d",
      "parents": [
        "b6fa76098d127f5641a7dda0dee21f06ca167edb"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 22:23:10 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:19:14 2015 +0100"
      },
      "message": "build: get rid of INCLUDES, use AM_CPPFLAGS\n\nINCLUDES in configure.ac was not used at all, and INCLUDES in\nMakefile.am is supposed to be AM_CPPFLAGS these days.\n\nReduces warnings spewed during bootstrap/autoreconf.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "86ce951e349fd08d1ba2c66f5f6d07756689422a",
      "tree": "a59185a0ae4900f2935e3a096a4e2ce920985290",
      "parents": [
        "cb4fc59c8a0f9df81109d38acbeaab5627e361f5"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Thu Jan 08 01:39:18 2015 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Fri Feb 06 21:54:01 2015 +0100"
      },
      "message": "ospfd: set O-bit in the option of all DD packets\n\nIf opaque-capability is enabled, we must set the O-bit in\nthe option field of all DD packets. Changing the option\nfield of DD packets may cause the peer to reset the state\nback to ExStart.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "149210656045c363d8f59b97ad9251b0c06a15df",
      "tree": "e107766b6b3ae49d7e8a7190cb3aa1e382a43f87",
      "parents": [
        "1c6db0d2da34044ddfb42665fda8a3387ecc451d"
      ],
      "author": {
        "name": "Olivier Dugeon",
        "email": "olivier.dugeon@orange.com",
        "time": "Mon Nov 03 14:59:06 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jan 27 19:53:24 2015 +0000"
      },
      "message": "ospfd: Fix initial Opaque LSA DB  synchronisation\n\nospfd has issues resynchronising its Opaque LSA DB with neighbours after restart\nor interface events. The problem comes from opaque_lsa.c code that blocks\nsubsequent opaque LSA flooding until the neighbour router acknowledge that, and\nremoves the old opaque LSA from its LSDB. The bug comes from the fact that the\nlock is never release, thus avoiding subsequent opaque LSA flooding.\n\nMore detail about the bugs and its solution is describeid in file\ndoc/te-link-params.md\n\nSigned-off-by: Olivier Dugeon \u003colivier.dugeon@orange.com\u003e\n"
    },
    {
      "commit": "4bab6806914dbb4b43f376ebf966a034a0ea72cd",
      "tree": "3b5e1cc5217bef269184e30795314de6ba8fafe5",
      "parents": [
        "ad5233a1bcdd7124992300673ad9c1035336eadd"
      ],
      "author": {
        "name": "Vipin Kumar",
        "email": "vipin@cumulusnetworks.com",
        "time": "Tue Sep 30 14:32:22 2014 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:26:04 2014 +0000"
      },
      "message": "Fix to take care of ordering between interface and router ospf command.\n\nSYMPTOM:\n\nInterface mode OSPF area configuration is not retained after restarting quagga.\n\nExample -\n\nquagga(config)# interface swp49\nquagga(config-if)# ip ospf area 0.0.0.0\n\nquagga# sh run\n\u003csnip\u003e\ninterface swp49\n ip ospf area 0.0.0.0\n ipv6 nd suppress-ra\n link-detect\n!\n\nquagga# write memory\n\n* Restart quagga at this point*\n\nquagga# sh run\n\u003csnip\u003e\ninterface swp49\n ipv6 nd suppress-ra\n link-detect\n!\n\nISSUE:\n\nThe issue is that the interface mode commands can reach the OSPF process even\nbefore \u0027router ospf\u0027 command that initializes the default OSPF instance, this\nis not getting handled properly in OSPF process.\n\nFIX:\n\nInitialize the default OSPF instance during OSPF process initializations, which\nis before \u0027router ospf\u0027 command is received in OSPF process. So, when interface\nmode command is received, it is guaranteed to have ospf instance to work with.\n\nOther way could be to call ospf_get() instead of ospf_lookup() while processing\nthe config command callbacks, although OSPF needs to have at least one instance\nstructure anyways, therefore calling it unconditionally in OSPF initializations\nshould be fine too.\n\nThere could be more elaborate fix(es) possible to handle this, like adding some\nordering mechanism for commands as they are read by a process, or storing the\nreceived command and applying it after the commands its dependent upon are\nprocessed. For the issue at hand, initializing the default instance in main()\nserves the purpose well.\n\nSigned-off-by: Vipin Kumar \u003cvipin@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Paul Jakma \u003cpaul@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8306be211f1bcd5a19e74d08cde399e1b518ed25",
      "tree": "6423afa35f2cebf24888c2a4b089399b05a9c895",
      "parents": [
        "6d831139569dbee69acc631361db917e2c47feeb"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Sep 30 14:11:17 2014 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:47 2014 +0000"
      },
      "message": "OSPFd: Update timestamps when we MaxAge LSAs.\n\nWhen an LSA is flushed we need to update the timestamps for them. This\nallows for the node to give the neighbor sufficient time to send back\nan acknowledgement before retransmission kicks in.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli@cumulusnetworks.com\u003e\nReviewed-by: Paul Jakma \u003cpaul@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6d831139569dbee69acc631361db917e2c47feeb",
      "tree": "ba38e9354ffcc98245b03a5f50ef0e3cedb48d47",
      "parents": [
        "1c06334f51c00471b0731227384ef42dc463db54"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Thu Oct 09 16:05:15 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:47 2014 +0000"
      },
      "message": "ospfd: Tweak previous iface RR write patch to avoid free/malloc \u0026 redundant log\n\n* linklist.{c,h}: (listnode_move_to_tail) new unction to move a\n  listnode to tail of list.\n* ospf_packet.c: (ospf_write) remove debug that seemed to be mostly covered\n  by existing debug.\n  Use listnode_move_to_tail to just move the list node to the end of the\n  tail, rather than freeing the one to hand and allocing a new one.\n"
    },
    {
      "commit": "1c06334f51c00471b0731227384ef42dc463db54",
      "tree": "3a33a5515485c44fec45060c3c0a5e4b4d5f826d",
      "parents": [
        "56a5f7752d9bf7297ea022544112909cf2ccba97"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Sep 30 13:04:45 2014 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:42 2014 +0000"
      },
      "message": "Avoid timing out of adjacencies by serving all interfaces in round-robin.\n\nEnsure that all interfaces are served in a round robin fashion during\nwrite. This prevents adjacencies from timing out when you have a lot of LSAs\nto be sent out each adjacency. This is essentially a scalability improvement.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Paul Jakma \u003cpaul@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b6eef003e1a79471addea0b01853b08aed812cc8",
      "tree": "f17d70ed70ae856650e342b62010f31537d8dd75",
      "parents": [
        "50f38b3500a6af6e1b0d1389d65c62d70c41e8c2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Thu Oct 09 14:19:51 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:16 2014 +0000"
      },
      "message": "ospfd: Some small tweaks to the SPF execution reason patch\n\n* ospf_spf.h: use an enum for the reason, and have it as a new argument to\n  ospf_spf_calculate_schedule, no need for additional call, and let compiler\n  do the checking.\n* ospf_spf.c: format changes - Quagga coding style places function names\n  at the start of a new line, for easy grepping for definition.\n  (ospf_spf_calculate_timer) Change the log format of SPF execution time to\n  avoid ginormous line, and make logging conditional, as is the norm.\n"
    },
    {
      "commit": "50f38b3500a6af6e1b0d1389d65c62d70c41e8c2",
      "tree": "0525b14ce3c53f891cd7f5a00fcf954f4893a99f",
      "parents": [
        "88d37b902bc8127379d3293b9671aa6a11479c23"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Sep 30 12:53:28 2014 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Nov 11 17:25:09 2014 +0000"
      },
      "message": "Compute and display SPF execution statistics\n\nDetailed SPF statistics, all around time spent executing various pieces of SPF\nsuch as the SPF algorithm itself, installing routes, pruning unreachable networks\netc.\n\nReason codes for firing up SPF are:\nR - Router LSA, N - Network LSA, S - Summary LSA, ABR - ABR status change,\nASBR - ASBR Status Change, AS - ASBR Summary, M - MaxAge\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Paul Jakma \u003cpaul@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6b274d90fa9b0c9f43e3ca9494cd78df1ccad14e",
      "tree": "7a2ca655111570d40615bb2fedaef56d7859e655",
      "parents": [
        "3790eb0d3f0bbb24b9c6be97f547cec144ee05d1"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Mar 09 06:42:30 2010 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Oct 27 16:24:08 2014 +0100"
      },
      "message": "ospfd: Don\u0027t leave stale RouterLSA\u0027s when changing areaID\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "ea2a598411cc7bd20456849e56bbc9e93c9916e7",
      "tree": "e1825968b9d0f7208b93944980331179456b7625",
      "parents": [
        "969d3550a8cbb07f8b4d5ebe8dde5064f8260140"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Thu Nov 26 12:23:07 2009 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Oct 27 15:57:59 2014 +0100"
      },
      "message": "ospfd: invalid MD5 auth_key?\n\nThis looks fishy in ospf_make_md5_digest()\nif (list_isempty (OSPF_IF_PARAM (oi, auth_crypt)))\n    auth_key \u003d (const u_int8_t *) \"\";\n...\nMD5Update(\u0026ctx, auth_key, OSPF_AUTH_MD5_SIZE);\nauth_key points to a \"\" string of len 1 which is a lot\nsmaller that OSPF_AUTH_MD5_SIZE. Is this intentional to\nget some random data or just a plain bug?\n\nAnyone using MD5 should have a closer look and decide\nwhat to do.\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "7aa9dcef80b2ce50ecaa77653d87c8b84e009c49",
      "tree": "bd4a8d881336a1551146725d7ae06b3e68553e4d",
      "parents": [
        "010ebbbca6396f272cc2d50d147dd922dda68213"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Fri Sep 19 14:42:23 2014 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 23 16:32:34 2014 +0100"
      },
      "message": "Fix most compiler warnings in default GCC build.\n\nFix lots of warnings. Some const and type-pun breaks strict-aliasing\nwarnings left but much reduced.\n\n* bgp_advertise.h: (struct bgp_advertise_fifo) is functionally identical to\n  (struct fifo), so just use that.  Makes it clearer the beginning of\n  (struct bgp_advertise) is compatible with with (struct fifo), which seems\n  to be enough for gcc.\n  Add a BGP_ADV_FIFO_HEAD macro to contain the right cast to try shut up\n  type-punning breaks strict aliasing warnings.\n* bgp_packet.c: Use BGP_ADV_FIFO_HEAD.\n  (bgp_route_refresh_receive) fix an interesting logic error in\n  (!ok || (ret !\u003d BLAH)) where ret is only well-defined if ok.\n* bgp_vty.c: Peer commands should use bgp_vty_return to set their return.\n* jhash.{c,h}: Can take const on * args without adding issues \u0026 fix warnings.\n* libospf.h: LSA sequence numbers use the unsigned range of values, and\n  constants need to be set to unsigned, or it causes warnings in ospf6d.\n* md5.h: signedness of caddr_t is implementation specific, change to an\n  explicit (uint_8 *), fix sign/unsigned comparison warnings.\n* vty.c: (vty_log_fixed) const on level is well-intentioned, but not going\n  to fly given iov_base.\n* workqueue.c: ALL_LIST_ELEMENTS_RO tests for null pointer, which is always\n  true for address of static variable.  Correct but pointless warning in\n  this case, but use a 2nd pointer to shut it up.\n* ospf6_route.h: Add a comment about the use of (struct prefix) to stuff 2\n  different 32 bit IDs into in (struct ospf6_route), and the resulting\n  type-pun strict-alias breakage warnings this causes.  Need to use 2\n  different fields to fix that warning?\n\ngeneral:\n\n* remove unused variables, other than a few cases where they serve a\n  sufficiently useful documentary purpose (e.g.  for code that needs\n  fixing), or they\u0027re required dummies.  In those cases, try mark them as\n  unused.\n* Remove dead code that can\u0027t be reached.\n* Quite a few \u0027no ...\u0027 forms of vty commands take arguments, but do not\n  check the argument matches the command being negated.  E.g., should\n  \u0027distance X \u003cprefix\u003e\u0027 succeed if previously \u0027distance Y \u003cprefix\u003e\u0027 was set?\n  Or should it be required that the distance match the previously configured\n  distance for the prefix?\n  Ultimately, probably better to be strict about this.  However, changing\n  from slack to strict might expose problems in command aliases and tools.\n* Fix uninitialised use of variables.\n* Fix sign/unsigned comparison warnings by making signedness of types consistent.\n* Mark functions as static where their use is restricted to the same compilation\n  unit.\n* Add required headers\n* Move constants defined in headers into code.\n* remove dead, unused functions that have no debug purpose.\n"
    },
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cbf435cb72b937c9e5bfe38905e05de3755b1021",
      "tree": "6d8d2927980cdce68c4a12e5dbfdd2920ff7ae32",
      "parents": [
        "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 11:42:20 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:47:30 2014 +0200"
      },
      "message": "ospfd: add debug messages for router lsa-generation\n\nAdd log messages to lsa_link_broadcast_set so it becomes more\napparent why a particular broadcast interface was added as\ntransit or stub interface.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b4b359a265f1b6272b4eb17c11e9c6ef9817f34b",
      "tree": "f6721202e8ee9f44ccdc54a61e4b74c6552912c0",
      "parents": [
        "8afee5c1729e56f74d27ceb1766bea9f943f060c"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Mon Apr 28 10:58:06 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:41 2014 +0200"
      },
      "message": "ospfd: For an ABR, ensure the right LSID is MaxAge\u0027d\n\nPROBLEM:\n\nAccurate garbage collection of maxage LSAs. The global OSPF structure has\na maxage_lsa tree - the key to the tree is \u003cls-id, adv-router\u003e tuple. Suppose\nthe ABR has multiple areas and has originated some intra-area LSAs. The\nkey for all those LSAs is the same. The code then ends up in a state where\nall but the first LSA do not get cleaned up from the areas\u0027 LSDB. A subsequent\nevent would readvertise those LSAs.\n\nPATCH:\n\nSince the LSA is going to stick around till it actually gets cleaned up by\nthe maxage_walker, make the LSA pointer as the key. Each distinct LSA that\ngets maxage\u0027d then gets added to the tree and will get cleaned up correctly.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\n[CF: Use CHAR_BIT; use uintptr_t; use sizeof(field) instead of sizeof(type)]\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n[DL: this must remain a temporary fix! needs to be redone after 0.99.23]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8afee5c1729e56f74d27ceb1766bea9f943f060c",
      "tree": "2a3fb12d1a3f951d17df4299266eda47ec85087c",
      "parents": [
        "e387dfd18ded3ddfef4c0a9cb896f73831864579"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:59 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:37 2014 +0200"
      },
      "message": "ospfd: clarify indentation and comments in ospf_lsa_maxage_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e387dfd18ded3ddfef4c0a9cb896f73831864579",
      "tree": "9632ef5671fdbc44f43333427154002484c768e2",
      "parents": [
        "49d7af115177d05bd66d3115cbacd56a7591ec5e"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Apr 28 08:04:58 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:31 2014 +0200"
      },
      "message": "ospfd: fix a reference counting issue introduced by commit 4de8bf0011\n\nCommit 4de8bf0011 added a return statement to a loop iterating over a\nroute_table. That loop uses route_top/route_next.\n\nAs commit 4de8bf0011 failed to add a route_node_unlock before the\nreturn statement, a reference is leaked when this codepath is taken.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "49d7af115177d05bd66d3115cbacd56a7591ec5e",
      "tree": "7082972f63b091f0e8bcbbf9a285fe10e5136a8d",
      "parents": [
        "4b4bda9bb1913579bd54667f62fafe58e2746478"
      ],
      "author": {
        "name": "Lu Feng",
        "email": "lu.feng@6wind.com",
        "time": "Fri Feb 21 08:11:15 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:28 2014 +0200"
      },
      "message": "ospfd: check the LS-Ack\u0027s recentness instead of only comparing the #seq\n\nISSUE:\n\nRTA(DR)-----(BackupDR)RTB\n\nRTA advertises a new LSA to RTB, and then flushes the LSA (with setting\nthe age of the LSA to MaxAge) within 1 second. Then the LSA is deleted\nfrom RTA, while it still exists on RTB with non-MaxAge and can not be\nflushed any more.\n\nFIX:\n\nThe reason can be explained in below:\n\na) RTA -- new LSA, #seq\u003d1 --\u003e RTB (RTB will send the delayed Ack in 1s)\nb) RTA -- MaxAge LSA, #seq\u003d1 --\u003e RTB (RTB discards it for the MIN_LS_ARRIVAL)\nc) RTA \u003c-- Ack for the new LSA, #seq\u003d1 -- RTB (RTA accepts it)\n\nIn the step c), ospf_ls_ack() compares the #seq of the entry in the LS-Ack\nwith that of local MaxAge LSA. The #seq of the two entries are same. So\nthe Ack is accepted and the LSA is removed from the retransmit-list (while\nit should not).\n\nIn RFC2328, section  13.7.  Receiving link state acknowledgments:\n\no   If the acknowledgment is for the same instance that is  \u003c\u003d\u003d\n    contained on the list, remove the item from the list and\n    examine the next acknowledgment.  Otherwise:\n\nwhere \"same instance\" does not mean the same #seq. We must call\nospf_lsa_more_recent() to check whether the two instances are same.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4b4bda9bb1913579bd54667f62fafe58e2746478",
      "tree": "11b3a421f85686544d95425c13608736226a7225",
      "parents": [
        "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jul 11 07:56:29 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:22 2014 +0200"
      },
      "message": "ospfd: don\u0027t allow to set network type on loopback interfaces\n\nOSPFd only allocates some stub information for loopback interfaces.\nThis causes a crash when the interface state machine is started on\nthat interface by configuring a different network type.\n\nIt doesn\u0027t make much sense to configure the network type of a loopback\ninterface, therefore, just forbid it.\n\nSee also bugzilla #670.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7a9d983e4f961c2103f2cf82a51d5d8321ad0e43",
      "tree": "11557e052ccb1f7606501a05eb5a1dc4d22dbdab",
      "parents": [
        "24c84dbe806084552d7bb14b9f1d00514a048b9d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Jul 10 11:56:18 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed May 14 16:46:08 2014 +0200"
      },
      "message": "ospfd: run DR election prior to LSA regeneration\n\nThe results from DR election are used when constructing router-LSAs.\nE.g. they are used to determine whether a broadcast interface should\nbe added with a link type of stub interface or transit interface.\n\nTherefore, we should run DR election prior before regenerating LSAs.\n\nBefore commit c363d3861b5384a31465a72ddc3b0f6ff007a95a the DR election\nwas called synchronously prior to router-LSA regeneration which was run\nasynchronously.\n\nThis fixes bug #761 on the Quagga bugzilla.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6f2a67031cfb21362fc7ecd3251761799c8ffe27",
      "tree": "514ba2ef904d56131bffaa5fbc40443826529641",
      "parents": [
        "cd40b329a2e4da882bcad0431c048c876bbeafbd"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:52 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:42 2014 +0200"
      },
      "message": "ospfd/ospf_vty.c: use keyword cmd style\n\nUse the new keyword command style for:\n\n  - default-information originate\n  - distance ospf\n  - redistribute\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "cd40b329a2e4da882bcad0431c048c876bbeafbd",
      "tree": "cfbdec5a7559c6d3e56766797896a18809aa1746",
      "parents": [
        "e712d0e3667ffad8109ef8bce3ce01927ee95bb7"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:51 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 20:21:41 2014 +0200"
      },
      "message": "lib/command.c: rewrite command matching/parsing\n\nAdd support for keyword commands.\n\nIncludes new documentation for DEFUN() in lib/command.h, for preexisting\nfeatures as well as new keyword specification.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2b00515a9b639fd1e057f3ebf10ded2dde920764",
      "tree": "1167cb145764208a132599e5d83980708501bac4",
      "parents": [
        "f7bf41534e885c7bc077529c591a1bce24a5f1e9"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Mon Sep 30 12:27:49 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:32:49 2014 +0200"
      },
      "message": "bgpd, ospfd, zebra: fix some DEFUN definitions\n\nFixup some DEFUNS with incorrect command strings or mixed up helpstrings.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e708ed69aa0b993527f48b1f31b645c00750927f",
      "tree": "8f33d73b2a85b51c042318d58a1750eeb8019616",
      "parents": [
        "a11e012e8661629d665e992e765741a5eaa7d017",
        "424cc3bd48da0f417c9056c5c2ade697a3386cd4"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 18 17:04:25 2014 +0100"
      },
      "message": "Merge volatile/cumulus_ospf6d\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "a11e012e8661629d665e992e765741a5eaa7d017",
      "tree": "d6967d9c5044f8c924aa2f4b62bac8e3bda358e2",
      "parents": [
        "b52aef18a9f3acc8b24ab5c2631dc574b8e2ec70"
      ],
      "author": {
        "name": "Remi Gacogne",
        "email": "rgacogne-github@coredump.fr",
        "time": "Sun Sep 08 13:48:34 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Tue Feb 11 10:28:03 2014 +0100"
      },
      "message": "security: Fix some typos and potential NULL-deref\n\nThis patch against the git tree fixes minor typos, some of them possibily\nleading to NULL-pointer dereference in rare conditions.\n\nSigned-off-by: Remi Gacogne \u003crgacogne-github@coredump.fr\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "a25a1264a5615a90e9ca9f60ccc1f397ca55bc56",
      "tree": "358307c0bf0d047c7279708ceed154f05dcbc707",
      "parents": [
        "6ee06fa9ed91412cb745668d462031cdbe2642e0"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Nov 27 14:36:05 2013 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Feb 10 22:07:11 2014 +0100"
      },
      "message": "ospfd: fixup log message in ospf_zebra_delete\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "c5926a92235874574b20e426a3752c1451a90ec7",
      "tree": "c8b8b66eee832e3db5e5d315e966b168918ef57e",
      "parents": [
        "bf986da797e7d2a0aaae313fea626ba433581f03"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:55:00 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: add p2p interface support\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nSigned-off-by: Ayan Banerjee \u003cayabaner at gmail.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nReviewed-by: James Li \u003cjli at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "2449fcd64ae95d5fbfd95d93468fc57003def57d",
      "tree": "8c152a482f2080ee425cd06381861d2bf69769d4",
      "parents": [
        "3810e06eebe14f75c66fb17a88574384573e95fa"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Sat Aug 24 07:54:17 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Nov 07 18:15:42 2013 -0800"
      },
      "message": "ospf6d: reinvoke MaxAge remover thread if not all MaxAge LSAs were flushed.\n\nMaxAge LSAs are being flushed out only on an event, unlike OSPFv2 where they\u0027re flushed out\nperiodically. This causes certain LSAs to hang around forever, never getting flushed out.\nThis patch makes flushing out MaxAge LSAs periodic, retriggered after a certain period if\nnot all MaxAge LSAs were flushed out.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt at cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma at cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8551e6dadce41fb87a61767af723cb25ae611a04",
      "tree": "cb0854c2e216989a0fa211d56d2bf6fd6948b2d6",
      "parents": [
        "a83a1e9c2f035d3152451dcfc97ab13b4ac427b9"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Oct 22 17:42:18 2013 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Oct 22 18:01:31 2013 -0700"
      },
      "message": "ospf6d/ospfd: refactor some common defines\n\nRearranging common defs and structures for use betweeen OSPFv2 and\nOSPFv3.  Created a new file called libospf.h under lib directory to\nhold defines that are common between OSPFv2 and OSPFv3 code bases.\n\n[DL: split of defines refactor from timer refactor]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "23cd8fb7133befdb84b3a918f7b2f6147161ac6e",
      "tree": "b8ef335dcbc2051a5017aa50bc4b759882b638d2",
      "parents": [
        "a12afd5e8e57c95505d4d0166af234c7f19e9fe1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Aug 02 07:27:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Aug 06 12:41:46 2013 +0200"
      },
      "message": "ospfd: protect vs. VU#229804 (malformed Router-LSA)\n\nVU#229804 reports that, by injecting Router LSAs with the Advertising\nRouter ID different from the Link State ID, OSPF implementations can be\ntricked into retaining and using invalid information.\n\nQuagga is not vulnerable to this because it looks up Router LSAs by\n(Router-ID, LS-ID) pair.  The relevant code is in ospf_lsa.c l.3140.\nNote the double \"id\" parameter at the end.\n\nStill, we can provide an improvement here by discarding such malformed\nLSAs and providing a warning to the administrator.  While we cannot\nprevent such malformed LSAs from entering the OSPF domain, we can\ncertainly try to limit their distribution.\n\ncf. http://www.kb.cert.org/vuls/id/229804 for the vulnerability report.\nThis issue is a specification issue in the OSPF protocol that was\ndiscovered by Dr. Gabi Nakibly.\n\nReported-by: CERT Coordination Center \u003ccert@cert.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c51443f4aa6b7f0b0d6ad5409ad7d4b215092443",
      "tree": "effbe8695f7bfd0ed5261b08d5beddb66cceed64",
      "parents": [
        "78116ab6e1524815910658898620776ae5fd4d18"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jul 08 23:05:28 2013 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sun Jul 28 16:13:10 2013 +0200"
      },
      "message": "ospfd: CVE-2013-2236, stack overrun in apiserver\n\nthe OSPF API-server (exporting the LSDB and allowing announcement of\nOpaque-LSAs) writes past the end of fixed on-stack buffers.  This leads\nto an exploitable stack overflow.\n\nFor this condition to occur, the following two conditions must be true:\n- Quagga is configured with --enable-opaque-lsa\n- ospfd is started with the \"-a\" command line option\n\nIf either of these does not hold, the relevant code is not executed and\nthe issue does not get triggered.\n\nSince the issue occurs on receiving large LSAs (larger than 1488 bytes),\nit is possible for this to happen during normal operation of a network.\nIn particular, if there is an OSPF router with a large number of\ninterfaces, the Router-LSA of that router may exceed 1488 bytes and\ntrigger this, leading to an ospfd crash.\n\nFor an attacker to exploit this, s/he must be able to inject valid LSAs\ninto the OSPF domain.  Any best-practice protection measure (using\ncrypto authentication, restricting OSPF to internal interfaces, packet\nfiltering protocol 89, etc.) will prevent exploitation.  On top of that,\nremote (not on an OSPF-speaking network segment) attackers will have\ndifficulties bringing up the adjacency needed to inject a LSA.\n\nThis patch only performs minimal changes to remove the possibility of a\nstack overrun.  The OSPF API in general is quite ugly and needs a\nrewrite.\n\nReported-by: Ricky Charlet \u003cricky.charlet@hp.com\u003e\nCc: Florian Weimer \u003cfweimer@redhat.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4c14b7f684510592f2eb46fd84859d8bca57def9",
      "tree": "f42890045f6d1cd37cdd61106b6524e6c476f445",
      "parents": [
        "4de8bf001189d40e086764fd804e59657d2e21e6"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:54 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 20 06:14:27 2013 +0200"
      },
      "message": "ospfd: fix flooding procedure\n\nAn ospf router should accept a new maxage LSA into its lsdb if it has any\nneighbors in state Exchange or Loading. ospfd would however only account\nfor neighbors on the same interface which does not seem to be a valid\noptimization.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "4de8bf001189d40e086764fd804e59657d2e21e6",
      "tree": "367c46fff12691e2622abc1d23ea0f95fdb97504",
      "parents": [
        "77ef01392f82c27a9892840c61a5e7391fd82415"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:52 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 20 06:12:13 2013 +0200"
      },
      "message": "ospfd: make ospf_maxage_lsa_remover actually yield\n\nospf_maxage_lsa_remover whould check whether to yield,\nbut run on anyway.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "f2b53dac4c72811c06779c596c6162b994eb427a",
      "tree": "9402b6fc1cf366121ba9f3bc623344284fac4196",
      "parents": [
        "677bcbbf153fe73e57cb44f668977cbd26661fd4"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Mar 20 15:28:46 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 22:38:04 2013 +0200"
      },
      "message": "ospfd: restore nexthop IP for p2p interfaces\n\ncommit c81ee5c... \"ospfd: Optimize and improve SPF nexthop calculation\"\nsubtly changed semantics of routes calculated over pointopoint links by\nremoving the nexthop IP address and instead using an ifindex route.\n\nThis breaks calculation of AS-Ext routes with a forwarding address since\nin ospf_ase_complete_direct_routes() this will be hit:\n    if (op-\u003enexthop.s_addr \u003d\u003d 0)\n      op-\u003enexthop.s_addr \u003d nexthop.s_addr;\nthus turning the route unusable by having an invalid nexthop.\n\nFix by restoring the nexthop IP on routes over PtP links.  This also\nallows running multi-access (Ethernet) interfaces in PtP mode again.\n\nThis bug is a regression against 0.99.21 and only present in 0.99.22.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\n[patch description and code comments rewritten]\nAcked-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nAcked-by: James Li \u003cjli@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "58952492d2eedd4b7974274a578a1fa9707125bb",
      "tree": "ef09366f20a103188a07bc9ed753bec723345967",
      "parents": [
        "c095185c26f72bff14238ca1209ef6b2d7a8b935"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:06:38 2013 +0200"
      },
      "message": "ospfd: fix LSA initialization for build without opaque LSA\n\nIf configured without opaque LSA support, the old code would incorrectly\nassociate type 5 LSAs with an area.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "e0630cb4d61557f956318a088f68f1fc4d261ef3",
      "tree": "954964aed06b0247b59686d73e109218951df369",
      "parents": [
        "d265548ffb8da9ba3e1dd327efbff31c7cd15027"
      ],
      "author": {
        "name": "Dinesh G Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Mon Jan 07 10:12:52 2013 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 10:12:52 2013 -0800"
      },
      "message": "ospfd: Remove dup MaxAge LSA flood\n\nStop additional, unnecessary flooding of MaxAge LSAs.\n\nWhen a MaxAge LSA is installed, if the LSA is prematurely aged or the LSA is\nnot self-originated, the LSA is flushed. This results in a the LSA being\nflooded a second time and in some cases flooded back to the receiver\n(unless the receiver is also the advertising router). A MaxAge\u0027d LSA has\nalready been flooded in ospf_flood() as part of the LSA receive processing\n(ospf_ls_upd). A self-originated LSA will be flooded from the originate/refresh\nroutine. Thus, in the install routine, a MaxAge\u0027d LSA only needs to be added\nto the MaxAge LSA list.\n\nSigned-off-by: Dinesh G Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d265548ffb8da9ba3e1dd327efbff31c7cd15027",
      "tree": "2a44f386797da60d850f27f591a7d5d7d763c710",
      "parents": [
        "0798cee34f5c436cd2a4b6e1d9a1ca90eee94292"
      ],
      "author": {
        "name": "Vishal Kumar",
        "email": "vishal3.kumar@gmail.com",
        "time": "Fri Dec 07 14:47:58 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 10:00:00 2013 -0800"
      },
      "message": "ospfd: Corrected ospfd Type-4/Type-5 ls update handling\n\nThis fix is for Type-4 LS updates handling at a ABR router where\nospf daemon is not distributing Type-4 LS updates with correct LS-Age\nafter learning about a ASBR router in a ospf network. Because of this\nType-5 LS updates are not learnt in ospf network.\nTesting Scenario:\nThis can be re-produced by restarting the ospfd daemon on DUT\n(mentioned in figure below)before the Hello time interval expires\nfor area 0.0.0.1.\n\n ____                       _______                       ____                    _________\n|    |   area: 0.0.0.1     |       |   area: 0.0.0.0     |    |   area: 0.0.0.2  |         |\n| R1 |---------------------|DUT/ABR|---------------------| R2 |------------------| R3/ASBR |\n|____|     x.x.x.0/24      |_______|    y.y.y.0/64       |____|     z.z.z.0/24   |_________|\n\nIn the above setup when ospfd is restarted (imp:before the Hello interval\nat R1 expires) and DUT learns about ASBR router R3 (Type-4) in the\nnetwork from R2, but this ls-update is not propagates in area\n0.0.0.1. So R1 never comes to know about the ASBR router in the\nnetwork, so all the type-5 LS updates coming from R3 are not learnt\nby R1. Further if we again restart ospfd daemon it starts working fine.\nWith the fix given this issue can be resolved.\n\nMore Discussion on this is available at:\nhttp://www.gossamer-threads.com/lists/quagga/dev/23892\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "0798cee34f5c436cd2a4b6e1d9a1ca90eee94292",
      "tree": "1b2293b711a12d743a0cd814235589bc4ce8d84f",
      "parents": [
        "de54b26caca7442af29656282e753b02aac6f093"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:43:42 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:59 2013 -0800"
      },
      "message": "ospfd: compile warning cleanups\n\nA set of patches to clarify some comments as well as cleanup code that was\ncausing warnings.  After these patches, the code can be compiled with\n\n-Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings\n-Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual\n-Wextra -Wno-unused-parameter -Wno-missing-field-initializers\n\n(what is current in trunk plus -Wextra -Wno-unused-parameter\n-Wno-missing-field-initializers).\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "de54b26caca7442af29656282e753b02aac6f093",
      "tree": "9457016f36d1e59edf672b54cf5b66fb29c68dd9",
      "parents": [
        "703819a9314692f3a3b7f888887b0cebc15c18ae"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:40:58 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:57 2013 -0800"
      },
      "message": "ospfd: Update nsm_change_state to static scope, as it is not called from elsewhere\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "703819a9314692f3a3b7f888887b0cebc15c18ae",
      "tree": "5a109e346ba409f3707bd5f041f5ffb3b2b5f94c",
      "parents": [
        "7798b6321cd0c6281b1a119ac894ff3749e88cc1"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:36:41 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:53 2013 -0800"
      },
      "message": "ospfd: Changed TE instance check to remove -Wtype-limits warning\n\nSince LEGAL_TE_INSTANCE_RANGE() was being passed an unsigned int, a warning\nwas being thrown due to the compare against \u003e\u003d 0.  Since this macro was used\nonly in one place, I removed the macro for an explict compare against a\nconstant for the MAX.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f92c57f8ba4f1e856934ec1736be3cad62be4785",
      "tree": "44c11ce2ea55d168218f654baf9cb8a83a4d6cd0",
      "parents": [
        "fbc043a847149499436fe4083b6384bde43fe578"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:29:21 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:50 2013 -0800"
      },
      "message": "ospfd: Update comments to be more clear in packet processing\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "fbc043a847149499436fe4083b6384bde43fe578",
      "tree": "17b90e2e2b22e91eb670ce0b0102047ac0862e16",
      "parents": [
        "1a61ad1011c498c4ae66cc145db673e53ef02962"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 12:54:18 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:49 2013 -0800"
      },
      "message": "ospfd: Fixed signed/unsigned masking of negative metrics\n\nIn the original code, negative metrics would be converted successfully by\natoi() and then converted to an unsigned int that would always compare\nsuccessfully against \u003e\u003d 0, leaving a large positive metric in the route map.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "1a61ad1011c498c4ae66cc145db673e53ef02962",
      "tree": "f46f6e0146c30159a1908c18ca54c8449fb1e075",
      "parents": [
        "bda3c326a3fe843417726bfe1bc8d4bafbb51fa9"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 12:50:23 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:49 2013 -0800"
      },
      "message": "ospfd: Fixed typo bug in ospf_vty.h:ospf_neighbor\n\nTypo bug. ospf_nbr_nbma_poll_interval_set() was being sent priority instead\nof interval.\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "bda3c326a3fe843417726bfe1bc8d4bafbb51fa9",
      "tree": "009521f1cf14b3a546bfbe3ec8850dfc0e4974d4",
      "parents": [
        "822d8f55199c0aee32c64f91532f637694d30e11"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Tue Dec 04 11:31:16 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:48 2013 -0800"
      },
      "message": "ospfd: fix argument parsing for distribute-list\n\nUse the correct argument for the protocol lookup in\nospf distribute-list commands.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "822d8f55199c0aee32c64f91532f637694d30e11",
      "tree": "db881758131d63c95b0bca943ba52e2b33228236",
      "parents": [
        "2345a2221aa0a02b96846beab6088815f41e791b"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Dec 04 11:11:41 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:46 2013 -0800"
      },
      "message": "ospf: fix apiserver enable\n\nThe ospf_apiserver_enable flag was being cleared _after_ the \"-a\"\ncommand-line option set it to 1.  Move up the initialisation, so\nenabling the OSPF API is actually possible.\n\nReported-by: Rosario Mattera \u003crosmattera@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "2345a2221aa0a02b96846beab6088815f41e791b",
      "tree": "2486cfbf3985c95a8f5ab0724de4d256e71bfd5e",
      "parents": [
        "faf9875832539f00940904e1424f2e789fef52d4"
      ],
      "author": {
        "name": "Leonard Tracy",
        "email": "letracy@amazon.com",
        "time": "Tue Dec 04 11:02:35 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:45 2013 -0800"
      },
      "message": "ospf: Fix type-4 network mask to 0 per RFC\n\nThe OSPF RFC (2328) states that the network mask field of a type 4\nLSA \"is not meaningful and must be zero\".  OSPFD has been setting\nthe mask as /32.  This patch changes OSPFD to set the mask to 0 per\nthe RFC\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "faf9875832539f00940904e1424f2e789fef52d4",
      "tree": "ebf2d85a78f96b5d7b2e2a8eab7d3ad07b484af6",
      "parents": [
        "91e6a0e5ca973c7183f638987b67aa370e9b484c"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Tue Dec 04 10:49:12 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:45 2013 -0800"
      },
      "message": "ospf: Reduce MaxAge log level\n\nReduce the log level for the MaxAge LSA reception when such an LSA does\nnot exist in the database.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "91e6a0e5ca973c7183f638987b67aa370e9b484c",
      "tree": "734c8c74baaaa6d3c303928b4f6d1d35d3394115",
      "parents": [
        "4ba4fc857685bfe31c7127826652012a750367c5"
      ],
      "author": {
        "name": "Dinesh Dutt",
        "email": "ddutt@cumulusnetworks.com",
        "time": "Tue Dec 04 10:46:37 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:43 2013 -0800"
      },
      "message": "ospf: Convert MAX_AGE LSA list to tree\n\nStore the MaxAge LSA list in a tree instead of a linked list for efficient access.\nWalking the list can be quite inefficient in some large systems and under certain tests.\n\nospfd maintains the list of LSA\u0027s that have been MaxAge\u0027d out in a separate\nlinked list for removal by a remover/walker thread. When a new LSA is to be\ninstalled, the old LSA is ejected and when it is ejected, the MaxAge LSA list\nis traversed to ensure that the old LSA is also removed from this list if it\nexists on this list.\n\nWhen a large number (\u003e 5K) MaxAge LSAs are bombarding the system, walking this\nlist takes a significant time causing timers to fire and actions to be taken\nsuch as expiring neighbors due to expiry of DeadInterval (especially when timer\nis really low, \u003c\u003d 12s), creating a spiral of instability.\n\nBy making this MaxAge LSA list be a tree, this problem is mitigated.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "4ba4fc857685bfe31c7127826652012a750367c5",
      "tree": "d7f07b950c43907d9c8c07dc4423bc008c01174a",
      "parents": [
        "16a86b3e2f82d3e19a722e2ab34c2c77f62ed926"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Mon Dec 03 11:17:24 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:41 2013 -0800"
      },
      "message": "ospf: forward ref. of areas for \"max-metric router-lsa administrative\" cmd\n\nIn the event areas are created at a later point of time with respect\nto the playback of the \"max-metric router-lsa administrative\" command,\nthose areas do not get into indefinite max-metric mode. This patch is\ninteneded to store the configuration and apply it to all future areas\nthat may be created.\n\nIn the process, some other bugs that were there with respect to restart\netc are fixed up.\n\nTested locally to see that the fix works across multiple\nareas and across multiple restarts.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "16a86b3e2f82d3e19a722e2ab34c2c77f62ed926",
      "tree": "7c0826c1f684292ec80f8b7898e07f9c8e56b3f1",
      "parents": [
        "e1a555b67cc868f95ea2b53c278bd8d091333e5f"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Mon Dec 03 10:48:46 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:40 2013 -0800"
      },
      "message": "ospf: suppress delete using replacement\n\nAfter a SPF run, OSPF deletes routes that have changed in terms of any\nmetric, type, and/or next-hops and re-adds them. Given that the Zebra-RIB\nalready support replacement semantics, we suppress deletes for routes\nthat will be added back again.\n\nThis has the following advantages. It reduces the number of IPC messages\nbetween OSPF/Zebra. Also, in the current flow, a batch of route deletes\nwere followed by a batch of adds even for say a metric change.\n\nWith the change, routes are sent as \"add\" when they are modified. Zebra\nalready implicitly deletes older routes.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "8c9ed279852393804c26e3c8c556a13d08654907",
      "tree": "540dfd742339845bac1079b89122a4a7b33aaba0",
      "parents": [
        "9234b382735b690f403ce018ce392316b2ad6e38"
      ],
      "author": {
        "name": "Hasso Tepper",
        "email": "hasso.tepper@gmail.com",
        "time": "Thu Oct 11 11:15:18 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Nov 05 15:15:57 2012 -0500"
      },
      "message": "ospfd: remove some buggy extra \u0027;\u0027 symbols.\n\n * ospfd/ospf_apiserver.c: extra ; causing lookup to fail always\n * ospfd/ospf_lsa.c: extra ; causing debug output even when disabled\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "837d16ccbe0fca413f8927da6a34b1e97ccada8a",
      "tree": "7aed5a517b619c03d11bf567f6a14cda6f8f5efe",
      "parents": [
        "655071f44aab42e89bcece3a93da456fdd0d913a"
      ],
      "author": {
        "name": "Balaji.G",
        "email": "balajig81@gmail.com",
        "time": "Wed Sep 26 14:09:10 2012 +0530"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:59 2012 -0700"
      },
      "message": "*: use array_size() helper macro\n\nUse the array_size() helper macro.  Replaces several instances of local\nmacros with the same definition.\n\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b4154c145a2d1d0679983130413b81d44fbb04ab",
      "tree": "f46031cc4f632315fd7ebb71737c971faeb635f4",
      "parents": [
        "821755530e328182c885c98891af799926bd56bd"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:53 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: respect max-metric over configured cost for summary LSAs\n\nISSUE\n\nWhen max-metric router-lsa administrative is invoked on an ABR created with...\narea \u003carea\u003e range \u003caddr/mask\u003e\nthe summary LSAs are sent out with 65535 (max-metric) added to the normal cost.\n\nWhen max-metric router-lsa administrative is invoked on an ABR created with...\narea \u003carea\u003e range \u003caddr/mask\u003e cost \u003ccost\u003e\nthe summary LSAs are sent out with \u003ccost\u003e (the max-metric is ignored).  This\nsecond behavior effectively incapacitates the max-metric function.\n\nPATCH\n\nThis patch evaluates the state of the router and if it\u0027s isolated as a stub\nrouter (rfc3137) via `max-metric router-lsa`, we unconditionally uses the\nvalue of 0xff0000 when advertising summary LSAs.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "821755530e328182c885c98891af799926bd56bd",
      "tree": "5227803e0f5cd089a41c1fc06a47cef18612b6a7",
      "parents": [
        "8fc9e007ee752a982fe47311702d7ff3b9c5b5cd"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:50 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: ABR algorithm not propagating MAXAGE LSAs into area\n\nWhen a range (or sub-range) is deleted, the area is notified by propagating a\nMAXAGE LSA.  This LSA stays in the database for a while to both insure\npropagation as well as in the off chance that it\u0027s useful in the near future.\n\nUnfortunately, the ABR algorithm was treating these MAXAGE LSAs as unchanged and\nnot propagating them within the areas.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8fc9e007ee752a982fe47311702d7ff3b9c5b5cd",
      "tree": "8dd5ef95e303d34f1045afe538f44a07dab017d3",
      "parents": [
        "d8a4e42b7d19a87eacc00c825e913907a58f39ee"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Mon Sep 24 17:26:46 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "ospfd: blackhole route removal for area range\n\nISSUE\n\nWhen an area range is created in which there the sub-area has routes that are\nsmaller than the range, an ABR creates a blackhole route to cover the range.\nWhen the range is removed, the blackhole route is not removed.\n\n--A----B----C---\n\nB is an ABR with A in area 1 and C in area 0.  If A advertises `10.2.0.0/30` and\n`10.2.0.4/30` and B is configured with `area 0.0.0.1 range 10.2.0.0/29` a\nblackhole is created on B (`blackhole 10.2.0.0/29 proto zebra`).  When the\narea/range is removed via the command line, the blackhole remains in existence\neven though the \"range\" route is removed from area 0 and the individual routes\nare propagated.\n\nPATCH\n\nThe reason for this behavior is that, prior to this patch, the range is deleted\nfrom the area\u0027s list, so when ospf_abr_manage_discard_routes() gets called,\nthere is nothing to clean up.  The patch removes the discard route as part of\nthe processing of the command line (ospf_area_range_unset()).\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "d8a4e42b7d19a87eacc00c825e913907a58f39ee",
      "tree": "2d0777bfbef0e77ca1722fe0e7b2591ef89d4102",
      "parents": [
        "b0145ddb4bf75d2c8853aa3d0bc7c522f4f17531"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Thu Sep 13 17:17:36 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "lib: improve fletcher checksum validation\n\nOVERVIEW\n\nThe checksum used in OSPF (rfc2328) is specified in rc905 annex B.  There is an\nsample implementation in rfc1008 which forms the basis of the quagga\nimplementation.  This algorithm works perfectly when generating a checksum;\nhowever, validation is a bit problematic.\n\nThe following LSA (generated by a non-quagga implementation) is received by\nquagga and marked with an invalid checksum; however, it passes both the rfc905\nand rfc1008 validation checks.\n\nstatic uint8_t lsa_10_121_233_29[] \u003d {\n   0x0e, 0x10, 0x02, 0x03,\n   0x09, 0x00, 0x35, 0x40,\n   0x0a, 0x79, 0xe9, 0x1d,\n   0x80, 0x00, 0x00, 0x03,\n   0x00, 0x8a, 0x00, 0x1c,\n   0xff, 0xff, 0xff, 0xe0,\n   0x00, 0x00, 0x36, 0xb0\n};\n\nLS Type: Summary-LSA (IP network)\n   LS Age: 3600 seconds\n   Do Not Age: False\n   Options: 0x02 (E)\n   Link-State Advertisement Type: Summary-LSA (IP network) (3)\n   Link State ID: 9.0.53.64\n   Advertising Router: 10.121.233.29 (10.121.233.29)\n   LS Sequence Number: 0x80000003\n   LS Checksum: 0x008a\n   Length: 28\n   Netmask: 255.255.255.224\n   Metric: 14000\n\nYou\u0027ll note that one byte of the checksum is 0x00; quagga would calculate the\nchecksum as 0xff8a.\n\nIt can be argued that the sourcing implementation generates an incorrect\nchecksum; however, rfc905 indicates that, for 1\u0027s complement arithmetic, the\nvalue 255 shall be regarded as 0, thus either values are valid.\n\nEXPLANATION\n\nThe quagga ospfd and ospf6d implementations operate by copying the PDU\u0027s\nexisting checksum in a holding variable, calculating the checksum, and comparing\nthe resulting checksum to the original.  As a note, this implementation has the\nside effect of modifying the contents of the PDU.\n\nEvaluation of both rfc905 and rfc1008 shows that checksum validation should\ninvolve calculating the sum over the PDU and checking that both resulting C0 and\nC1 values are zero.  This behavior is enacted in the rfc1008 implementation by\ncalling encodecc with k \u003d 0 (checksum offset); however, this functionality had\nbeen omitted from the quagga implementation.\n\nPATCH\n\nThis patch adds the ability to call the quagga\u0027s fletcher_checksum() with a\nchecksum offset value of 0xffff (aka FLETCHER_CHECKSUM_VALIDATE) which returns\nthe sum over the buffer (a value of 0 indicates a valid checksum).  This is\nsimilar to the mechanism in rfc1008 when called with k \u003d 0.  The patch also\nintroduces ospf_lsa_checksum_valid().\n\nospf6d had it\u0027s own implementation of the fletcher checksum in\nospf6_lsa_checksum(); it\u0027s the same algorithm as in fletcher_checksum().  This\npatch removes the local implementation in favor of the library\u0027s as well as creates\nand uses ospf6_lsa_checksum_valid().\n\nquagga\u0027s ISIS implementation suffers from the same problem; however, I do not\nhave the facilities to validate a fix to ISIS, thus this change has been left to\nthe ISIS maintainers.  The function iso_csum_verify() should be reduced to\nrunning the fletcher checksum over the buffer using an offset of 0.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "945ea293399af6c9ff3efd07686ff30c3d2a3e8b",
      "tree": "81f039e5b13b1f008a20e534e27c738b970c1874",
      "parents": [
        "28971c8cb1138700e87dc7da673e59b5596bb51b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 06 12:17:12 2012 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Oct 19 11:49:09 2012 +0100"
      },
      "message": "Revert \"ospfd: Do not fall back to intervening router.\"\n\nThis reverts commit 9289c6ff55cd96c943d23e43fc9e5f987aa965ed.\n\nThe commit reverted an earlier change which was fixed a bug that caused\nblack-holes to remote destinations with multiple paths, that could occur\nduring convergence. Overall, the previous code is more correct.\n"
    },
    {
      "commit": "4bed21c402fa1079301d47811a4579985997c881",
      "tree": "977e18bc3403395a33de2d5fef1d5d738fa42cf7",
      "parents": [
        "9289c6ff55cd96c943d23e43fc9e5f987aa965ed"
      ],
      "author": {
        "name": "Brad Smith",
        "email": "brad@comstyle.com",
        "time": "Thu Aug 09 00:40:09 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 25 05:56:00 2012 +0200"
      },
      "message": "build: correct libtool parameter used within Makefiles\n\nThis corrects the parameters passed to libtool when linking\nthe shared libraries. The paramter name is -version-info not\n-version.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "9289c6ff55cd96c943d23e43fc9e5f987aa965ed",
      "tree": "b971fa4b0ce15e02abd27a62548d53371e4cc0b2",
      "parents": [
        "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:14 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: Do not fall back to intervening router.\n\nThe patch in bug 330 did two things. It add a return value\nwhether ospf_nexthop_calculation() failed or not and also\nmoved the return stmt for 16.1.1 para 5 so now SPF\nwill fallback to the intervening router when no back links are found\nby 16.1.1 para 5. This is wrong and can potentially create black holes\nor routing loops according to Dave Katz and Acee Lindem at ospf@ietf.org\n\nEven if the current code could be proved to be harmless in all cases,\nit adds substantial extra processing and memory allocations.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "ba281d3d04053b7c59ecdfdbea91a62c09e9f8a4",
      "tree": "3ada2bf381bef8a571776a3e54879c8d1aa8f149",
      "parents": [
        "c963c20346c0e3cd75735b88beded98389607cd5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:13 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:45 2012 +0200"
      },
      "message": "ospfd: use ZEBRA_NEXTHOP_IPV4_IFINDEX\n\nOSPF really needs to specify interface in its routes. Otherwise\nospf may change the wrong route.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n[fixed up some whitespace errors, split patch in two]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "57c639f01ec6be70ac858f412d32b638a9756bed",
      "tree": "cd415e8d098b827d69dcfdf3d3b22f5df11cc4c9",
      "parents": [
        "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:12 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:37 2012 +0200"
      },
      "message": "ospf_spf_process_stubs: use LSA pos to find OSFP interface\n\nThis is better than a prefix lookup as prefixes may not be\nunique, that is, the same prefix can exist on several interfaces.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb",
      "tree": "dad1ab0d81b72a7c7a869bc7dc051b703deec9be",
      "parents": [
        "7b92589c225ae46417fc3fa0714a1b6f53f19c51"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Jul 07 17:06:11 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:07:30 2012 +0200"
      },
      "message": "ospfd: Optimize and improve SPF nexthop calculation\n\nMaintain router LSA positions in OSPF interface.\nFind the OSPF interface in nexthop_calculation using\nthe position in the router LSA. This is possible because\nthe only time nexthop_calculation needs to look up interfaces\nis when dealing with its own Router LSA.\n\nThis has the following advantages:\n - Multiple PtP interfaces with the same IP address between two routers.\n - Use Unnumbered PtP on just one end of the link.\n - Faster OI lookup for the OSPF interface and only\n   done once for PtoP links.\n\n*ospf_interface.h: (struct ospf_interface) Add storage for\n\t\t   storing router LSA position.\n\n*ospf_interface.c: (ospf_if_lookup_by_lsa_pos)\n\t\t   lookup OSPF I/F in an area using LSA position.\n\n*ospf_lsa.c: (router_lsa_link_set) record Router LSA position.\n\n*ospf_spf.c: (ospf_spf_next) Count and pass along lsa position.\n\t     (ospf_nexthop_calculation) Add lsa position argument.\n\t     call ospf_if_lookup_by_lsa_pos() for OSFP interface handle.\n\t     Clean up and remove all calls ospf_if_is_configured() the\n\t     rest. Adjust a few debug logs.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "7b92589c225ae46417fc3fa0714a1b6f53f19c51",
      "tree": "38e1add198ee857211684250858a3b946c05c6a9",
      "parents": [
        "aa5cf24b9de96245f2166ef1c4e9612890ced1b3"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Mon Jul 23 18:17:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jul 25 18:02:31 2012 +0200"
      },
      "message": "ospfd: avoid exhausting memory with OSPF vertices (BZ#476)\n\nThis was found in scale testing at OSR;  ospfd is adding the same link\nover and over again to the SPF tree.  This fix prevents the resulting\nmemory corruption from happening and adds a debug message to track\noccurence of this issue and/or confirm a proper fix.\n\n(This version was improved by Scott Feldman over the earlier RFC.)\n\n* ospfd/ospf_spf.c: (ospf_spf_add_parent) loop over existing vertices\n  and refuse to add duplicates.\n\nTested-by: Martin Winter \u003cmwinter@opensourcerouting.org\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8046ba6ec4d6e87bf8da6563c0f3e5e66c4652b3",
      "tree": "1b38b2eae4e1cee042f96a42217b14647159bf0f",
      "parents": [
        "0ff4b9c96793898429052de576d8da368e48997e"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 31 13:30:28 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "snmp: let handlers accept OID from a lesser prefix\n\nMost table handlers do not expect to be given an OID whose prefix is\noutside what they can handle. This is not a problem with the SMUX\nimplementation since it always correct the OID such that the prefix\nmatches. However, this is not the case for the AgentX\nimplementation. A new function, smux_header_table() is used to do this\nnormalization.\n"
    },
    {
      "commit": "b7c0d0651cd64f644d02ef5e4d1b82febe7e57d8",
      "tree": "5480eff7b8581e1168d23657da0f30e23100d7bc",
      "parents": [
        "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 11:17:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "agentx: handle SNMP traps\n\nsmux_trap() signature has been changed to provide appropriate level\ninformation to send SNMPv2 notifications. This includes the addition\nof the enterprise OID to use (from which is derived the SNMP trap OID)\nand the MIB registry to locate the appropriate function for variable\nbindings provided by the trap.\n\nThe SMUX implementation has been updated but ignore the provided\nenterprise OID. Instead, it still uses the SMUX peer OID to keep\ncompatibility with previous versions of Quagga. The SMUX\nimplementation also ignores the provided MIB registry since it uses\nsmux_get() function to grab the appropriate values. This is not\npossible with the AgentX implementation since there is no such\nfunction provided by NetSNMP.\n"
    },
    {
      "commit": "b8cf46b715b2c21db5dce8118c70b4dd9b5255a3",
      "tree": "61fea7fd6d75345f5224e36d8ca33badc9d39b17",
      "parents": [
        "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Fri May 25 08:56:44 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: drop findVar element from trap object struct\n\nThis element was not unused.\n"
    },
    {
      "commit": "4b89e45d928d41bb5d32a00ba7b402d6a3bbdf44",
      "tree": "7471ad396e285ff5b0ca3d85600f3c184f43dd2c",
      "parents": [
        "d6be5fb9bc41ea77547204eeedd12132b26ad662"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Thu May 24 21:22:01 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "smux: remove `tick` argument from smux_trap()\n\nsmux_trap() contains an argument whose use appears to be to set\nsysUpTime.0/timestamp field in SNMP trap. However, this value is not\nused in smux_trap(). Moreover, it is expected that this field is the\nvalue of sysUpTime.0 when the trap was sent and not any other time\nrelated to the trap. To avoid any confusion, we remove this field from\nthe signature of the function.\n"
    },
    {
      "commit": "08d7f6533ecc0f935a76918c462982004534864d",
      "tree": "0e67590a8a2aba551439c46bfa8b33d7fba4feb7",
      "parents": [
        "6b1e37f8537fa2a4560de32e83ca5089763e2d39"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:29:17 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: use net-snmp-config to configure NetSNMP\n\nThe correct method to link to NetSNMP is to use net-snmp-config (which\nis like pkg-config). Explicit link to libcrypto is also dropped\n(NetSNMP libs are linked to libcrypto, no need to link Quagga to\nit). Moreover, @SNMP_INCLUDES@ is dropped because useless. Due to a\nbug in configure.ac, it was properly populated.\n"
    },
    {
      "commit": "6b1e37f8537fa2a4560de32e83ca5089763e2d39",
      "tree": "941dfbfbe62981ec214ac1e5a3f607368f4bf1d4",
      "parents": [
        "9e7a548ce421660b0d22bfeb90c2b2b53742aac7"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 22:15:20 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: only define HAVE_SNMP\n\nNetSNMP is the only SNMP implementation for Quagga. We don\u0027t need two\ndifferent symbols.\n"
    },
    {
      "commit": "9e7a548ce421660b0d22bfeb90c2b2b53742aac7",
      "tree": "4c962403808f98806781fb4ad15594152bc1effa",
      "parents": [
        "a47c5838e9f445ab887ad927706b11ccbb181364"
      ],
      "author": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Tue May 22 14:32:22 2012 +0200"
      },
      "committer": {
        "name": "Vincent Bernat",
        "email": "bernat@luffy.cx",
        "time": "Mon Jun 25 19:03:23 2012 +0200"
      },
      "message": "build: allow configure and build in a separate directory\n\nSome .h files in lib/ are autogenerated. The search path should\ninclude the build directory and the source directory. They usually\nmatch but sometimes, they may be different. For example:\n\n $ mkdir build\n $ cd build\n $ ../configure\n $ make\n"
    },
    {
      "commit": "7939e016b3d4ecd2f5b8ad708b69607e05a084a6",
      "tree": "eb33846c71de49df9d1128eec149f2a214bb74f9",
      "parents": [
        "3cadc0cdebb8f8262b1c1fbb8bfcbcdc3baa3733"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Mon Apr 09 18:03:57 2012 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Apr 16 18:37:17 2012 +0200"
      },
      "message": "ospfd: Fixes a crash of the daemon with a snmp walk\n\n    - And allows to walk the LSDB.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\n"
    },
    {
      "commit": "a25a44dba84e9a6ac2b87e24472b6e9f959d845b",
      "tree": "86ce0bc9de906bf9aaf6ea822b157b31b7c45a06",
      "parents": [
        "e96b312150d8e376c1ef463793d1929eca3618d5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Apr 03 20:33:24 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Apr 11 23:18:29 2012 +0200"
      },
      "message": "ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case\n"
    },
    {
      "commit": "aee567450eaf32877d00f47c4cc5d05c5fb85a51",
      "tree": "9fb0df5ce6fedc3e403f8b2b4d59ed0e556a1453",
      "parents": [
        "bd5651f0ec7aa94627a2a6868dd458f016750a35"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Feb 28 15:15:29 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:45 2012 +0100"
      },
      "message": "ospfd: reduce ospf_verify_header()\n\nProtocol version checks fits ospf_packet_examin() better (like it is\nimplemented in ospf6d), and packet type check is already there.\n"
    },
    {
      "commit": "bd5651f0ec7aa94627a2a6868dd458f016750a35",
      "tree": "9f5dcd01bd90d1ea78cd841f00fea4bbdc3a6dee",
      "parents": [
        "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:59:43 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:38 2012 +0100"
      },
      "message": "ospfd: bring ospf_check_auth() into focus\n\nThe old ospf_check_auth() function did two different jobs depending on\nAuType. For Null and Simple cases it actually authenticated the packet,\nbut for Cryptographic case it only checked declared packet size (not\ntaking the actual number of bytes on wire into account). The calling\nfunction, ospf_verify_header(), had its own set of MD5/checksum checks\ndispatched depending on AuType.\n\nThis commit makes the packet size check work against the real number of\nbytes and moves it to ospf_packet_examine(). All MD5/checksum\nverification is now performed in ospf_check_auth() function.\n\n* ospf_packet.c\n  * ospf_packet_examin(): check length with MD5 bytes in mind\n  * ospf_verify_header(): remove all AuType-specific code\n  * ospf_check_auth(): completely rewrite\n"
    },
    {
      "commit": "ef1b78cbcd8ade0c5444f3ff9dd00a40e760ec92",
      "tree": "ad1f4d0ac76be5cff0cea5c44ba23b76967746c2",
      "parents": [
        "b29adf9c3e69f298f748564a20abdf7274bbc549"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Feb 26 17:00:57 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:34 2012 +0100"
      },
      "message": "ospfd: introduce ospf_auth_type_str[]\n"
    },
    {
      "commit": "b29adf9c3e69f298f748564a20abdf7274bbc549",
      "tree": "1b1d18c542fa6cae9f4d7f7a6e559a23b0bdafc3",
      "parents": [
        "4e31de792ec5e48a97360b5b86196b4fa02996a3"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Feb 20 23:08:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:30 2012 +0100"
      },
      "message": "ospfd: fix packet length check for auth/LLS cases\n\nAn OSPFv2 packet with trailing data blocks (authentication and/or\nlink-local signaling) failed the recently implemented packet length\ncheck, because trailing data length isn\u0027t counted in the packet header\n\"length\" field. This commit fixes respective check conditions.\n\n* ospf_packet.c\n  * ospf_packet_examin(): use \"bytesdeclared\" instead of \"bytesonwire\"\n"
    },
    {
      "commit": "4e31de792ec5e48a97360b5b86196b4fa02996a3",
      "tree": "6312c43f628d69392676c85129f107e4ee53b802",
      "parents": [
        "2d8223c5472129eba89d630dc4f2688ebeae1dd8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Feb 17 16:20:50 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:28 2012 +0100"
      },
      "message": "ospfd: introduce ospf_lsa_minlen[] (BZ#705)\n\nThis commit ports more packet checks to OSPFv2, in particular, LSA size\nverification and Router-LSA link blocks verification.\n\n* ospf_lsa.h: add LSA size macros\n* ospf_packet.h: add struct ospf_ls_update\n* ospf_packet.c\n  * ospf_lsa_minlen[]: a direct equivalent of ospf6_lsa_minlen[]\n  * ospf_router_lsa_links_examin(): new function, verifies trailing\n    part of a Router-LSA\n  * ospf_lsa_examin(): new function like ospf6_lsa_examin()\n  * ospf_lsaseq_examin(): new function like ospf6_lsaseq_examin()\n  * ospf_packet_examin(): add type-specific deeper level checks\n"
    }
  ],
  "next": "2d8223c5472129eba89d630dc4f2688ebeae1dd8"
}
