)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "2d8223c5472129eba89d630dc4f2688ebeae1dd8",
      "tree": "482c71c9a6f149ab78938de2df7f3e534a9756a3",
      "parents": [
        "e52591481ed64e4cf9f26a76ad682ed7e6b451e7"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 20:32:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:22 2012 +0100"
      },
      "message": "ospfd: review ospf_check_md5_digest()\n\nRewrite some pointer arithmetics without the additional variables and\nmove byte order conversion inside the function.\n"
    },
    {
      "commit": "e52591481ed64e4cf9f26a76ad682ed7e6b451e7",
      "tree": "738a2ba31eb42b6d5d61fd61bad772a73c5cd82e",
      "parents": [
        "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 16:07:18 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:19 2012 +0100"
      },
      "message": "ospfd: review ospf_check_auth()\n\n1. The only purpose of \"ibuf\" argument was to get stream size, which\nwas always equal to OSPF_MAX_PACKET_SIZE + 1, exactly as initialized\nin ospf_new().\n\n2. Fix the packet size check condition, which was incorrect for very\nlarge packets, at least in theory.\n"
    },
    {
      "commit": "75c8eabbb5d3dc8aa21b61e8700ab939ce272f5c",
      "tree": "9ecfa0b4bedf00abb544fea8b9242e59af31a5b6",
      "parents": [
        "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 30 15:41:39 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:14 2012 +0100"
      },
      "message": "ospfd: introduce ospf_packet_minlen[] (BZ#705)\n\nThis commit ports some of the OSPFv3 packet reception checks\nto OSPFv2.\n\n* ospf_packet.c\n  * ospf_packet_minlen[]: a direct equivalent of ospf6_packet_minlen[]\n  * ospf_packet_examin(): new function designed after the first part\n    of ospf6_packet_examin()\n  * ospf_read(): verify received packet with ospf_packet_examin()\n* ospf_packet.h: add convenience macros\n"
    },
    {
      "commit": "7e0e2cb14ca16ce9eaca3b0300c1ffa92a6a104b",
      "tree": "1327873f183d26d4a329f1a135fb414e9163975d",
      "parents": [
        "272ca1e33016b1cbf9c72038d5e631b0adb04dc9"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Jan 20 22:32:10 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:05:11 2012 +0100"
      },
      "message": "ospfd: fix ospf_packet_add_top() to use LOOKUP()\n"
    },
    {
      "commit": "272ca1e33016b1cbf9c72038d5e631b0adb04dc9",
      "tree": "6728fe6847947d0ddf600bd22f4bf7f040da8274",
      "parents": [
        "a20a4060c8b90e3d88ce97d439eee1a38260d7c5"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Jan 15 19:12:19 2012 +0400"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Mon Mar 12 11:04:54 2012 +0100"
      },
      "message": "ospfd: use LOOKUP() for ospf_packet_type_str\n\n* ospf_packet.h: add proper str/max extern declarations\n* ospf_packet.c\n  * ospf_packet_type_str: rewrite in \"struct message\", add max value\n  * ospf_packet_add(): use LOOKUP()\n  * ospf_write(): ditto\n  * ospf_hello(): ditto\n  * ospf_read(): ditto\n* ospf_dump.h: the declaration does not belong here\n* ospf_dump.c\n  * ospf_header_dump(): use LOOKUP()\n  * show_debugging_ospf(): ditto\n"
    },
    {
      "commit": "b4e45f67057be22133b6bec88cdf285d5c8214db",
      "tree": "80f775047efb255ef573b2e9d3affb1a7caeb6d1",
      "parents": [
        "6eac79a6fed4842e00607c00c445213b51bba377"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Dec 05 16:35:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 23 14:31:42 2012 +0400"
      },
      "message": "fix zebra protocol after MP-BGP changes\n\nThe previous commits modified both zebra and bgpd for additional\nSAFI field, but not any other routing daemon, which led to zebra\ndaemon crashing with failed assertion.\n"
    },
    {
      "commit": "ce3cdcfbed2ca65d0d3a12b926dd1103910a6056",
      "tree": "5f0b3df2ba3a0337e535b1ed590b1adf0891485e",
      "parents": [
        "afcb767922509c4d998f1c567e350b9809c148ab"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 24 18:17:09 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 13:40:11 2012 +0000"
      },
      "message": "ospfd: use IS_LSA_SELF() where appropriate\n"
    },
    {
      "commit": "8216f53b73d8eb375615ad4395deace11d1e22d6",
      "tree": "b5ffdff7813c92555889b1be89c907a9f1a14789",
      "parents": [
        "72f062b6ebd7f279dc3f0b66acdb0b718ff42e40"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 03 14:08:01 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 11:46:11 2012 +0000"
      },
      "message": "ospfd: justify ospf_default_originate_timer()\n\nThe function is implemented in ospf_lsa.c, move its \"extern\" declaration\nto ospf_lsa.h for consistency.\n"
    },
    {
      "commit": "72f062b6ebd7f279dc3f0b66acdb0b718ff42e40",
      "tree": "260bffa9e869cabb392f1914da036e9eabe04017",
      "parents": [
        "5e1731ac1d8593c1317d5d907eda62b52b17470f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Aug 28 22:38:45 2011 +0400"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 08 11:43:07 2012 +0000"
      },
      "message": "ospfd: address more trivial compiler warnings\n\n* ospf_ase.c\n  * ospf_ase_complete_direct_routes(): dismiss unused variable\n"
    },
    {
      "commit": "f63f06da2e7be6b17c72dd6110aae179f42f3700",
      "tree": "a36b625a9ea06d0720a240276ed1b8af33193ed7",
      "parents": [
        "651e70d7f419ee7af75113f80e688c0100e9cff5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Apr 08 12:44:43 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jan 06 16:18:18 2012 +0000"
      },
      "message": "general: remove inline qualifiers and move in-header functions to objects\n\n* (general) Move functions in headers into files, to be compiled into\n  shared object files. Remove inline qualifier from functions. Let the\n  compiler do the work.\n"
    },
    {
      "commit": "664711c1f4cc218073783ff6ce362093debd7b53",
      "tree": "5566b0c8b9d22de55772717ad6c701ea85b6241e",
      "parents": [
        "6fd16207fee6d4d09f29ed7ecf26303a7220e473"
      ],
      "author": {
        "name": "Ulrich Weber",
        "email": "ulrich.weber@sophos.com",
        "time": "Wed Dec 21 02:24:11 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 19:13:28 2012 +0400"
      },
      "message": "lib: fix some strtoul() use cases\n\n...otherwise 4294967295 is not a valid value on 32bit systems\n"
    },
    {
      "commit": "4e677f52db2276b92bcc201b4379a66a83d45caa",
      "tree": "9abc7790ba98ed7a865cba20c7f4fd3947dbf9e3",
      "parents": [
        "fe40bfa2e1b913e24d6b8374fd83a19d00ad7c1c"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sun Dec 18 16:27:02 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:38:04 2012 +0400"
      },
      "message": "ospfd: fix bug in NSSA ABR status check\n\n* ospf_abr.c\n  * ospf_abr_nssa_am_elected(): feed \"best\" instead of \"address of best\"\n    into IPV4_ADDR_CMP(), because \"best\" is a pointer; also, mean s_addr\n    field of the structures to get better typed pointers\n"
    },
    {
      "commit": "de5ccb96023181765c9904ab40e645c397f536d6",
      "tree": "6f933ed4a727da24167cac66138418de4088d135",
      "parents": [
        "2ea1ab1c30c765cd4703794fcfaf044454fb533c"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Mon Dec 12 20:30:10 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Jan 02 18:37:32 2012 +0400"
      },
      "message": "ospfd: fix packet reception for FreeBSD 10.\n\n* ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not\n  subtract the IP header size from ip_len.\n\nThis is the patch from FreeBSD\u0027s ports/net/quagga/files/patch-ospfd__ospf_packet.c,\nby Boris Kovalenko.\n"
    },
    {
      "commit": "223da1a912305f2cac6f72c3b480ce103a25d7d6",
      "tree": "5ecb7b554a0844b17a3782a891f4a8f45499baac",
      "parents": [
        "9206f9ecd5526778bf449bbb12f056d681d3b040"
      ],
      "author": {
        "name": "Jaroslav Fojtik",
        "email": "jafojtik@seznam.cz",
        "time": "Sun Dec 11 18:22:16 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 21 16:42:35 2011 +0400"
      },
      "message": "ospfd: more info in LSA checksum warning (BZ#685)\n"
    },
    {
      "commit": "e0ca5fde7be5b5ce90dae78c2477e8245aecb8e9",
      "tree": "0e0b32ddbed4a84a3b2de9dd7217165cb81f52fa",
      "parents": [
        "ebf08631cad8a420fc6bfb7c45af5496dc11023e"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Wed Sep 16 01:52:42 2009 +0200"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 19:13:17 2011 +0400"
      },
      "message": "lib: put route_types.txt to real use\n\nthis replaces most occurences of routing protocol lists by preprocessor\ndefines from route_types.h. the latter is autogenerated from\nroute_types.txt by a perl script (previously awk). adding a routing\nprotocol now is mostly a matter of changing route_types.txt and log.c.\n\nConflicts:\n\n\tlib/route_types.awk\n"
    },
    {
      "commit": "05e54ee3df973194f2a00e3ea0b1da7bebc71fd6",
      "tree": "c07e2bbad0c55fe03eb2975b98f121de6ae55707",
      "parents": [
        "ad8d4802a3078de694539fa9bae12322fc82042f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Dec 03 17:45:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:27:01 2011 +0400"
      },
      "message": "build: delete .cvsignore files\n"
    },
    {
      "commit": "ad8d4802a3078de694539fa9bae12322fc82042f",
      "tree": "b99a8a6a31ce269067dae6de71cabdb7dcf4d547",
      "parents": [
        "3414d03545205eda9fb47890e01b780485a613c6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 02 20:02:40 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:53 2011 +0400"
      },
      "message": "ospfd: spelling\n"
    },
    {
      "commit": "b51146856e660bcec723f535c17dc1c38b2f6efc",
      "tree": "8f501c98b3714e1d5ed381bd4d82fece4106aa8c",
      "parents": [
        "2f658673fa477b58ed38caf94c156c95948de382"
      ],
      "author": {
        "name": "Vyacheslav Trushkin",
        "email": "me@dogonthesun.net",
        "time": "Fri Nov 25 18:51:48 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 13 14:26:28 2011 +0400"
      },
      "message": "quagga: option \"-z\" (\"--socket \u003cpath\u003e\") added\n\nAll daemons modified to support custom path to zserv\nsocket.\n\nlib: generalize a zclient connection\n\nzclient_socket_connect added. zclient_socket and\nzclient_socket_un were hidden under static expression.\n\"zclient_serv_path_set\" modified.\n"
    },
    {
      "commit": "075e12f57d6c0b115cd177c7b244d9810460e3ff",
      "tree": "755a8a7960a918c77f38a15d931634e9d9170879",
      "parents": [
        "f04a80a5d209dbb54f6fec5d0149b7c0e489d29e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 06 23:54:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Wed Dec 07 01:23:32 2011 +0400"
      },
      "message": "ospfd: remove unused code\n\nThe code for nssa_range and other bits that were written but\nnever used.\n"
    },
    {
      "commit": "fb01f87f4f50744206222343a780721af19fe56c",
      "tree": "3c425d161ddac2a24c2c2fec91e3e794163a8ffd",
      "parents": [
        "b24b19f719fdd9c3d61a0c93552cd64d832d964c"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Dec 06 14:46:42 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Dec 06 15:02:52 2011 +0400"
      },
      "message": "ospfd: avoid redundant lookup in ospf_redistribute_withdraw\n\nThe old algorithim looked up every node twice as it withdrew\nthe entry. It looks up entry once in redistribute_withdraw, then\nlooks it up again info_delete. Use result of first lookup\nto do the free directly.\n\nThis may explain the slow performance observed in\n https://bugzilla.vyatta.com/show_bug.cgi?id\u003d4421\n"
    },
    {
      "commit": "4de148e5d6f6f7885b2c0952a236a3bc3ec36250",
      "tree": "5360772467235934673f5b7e3c039424bcc61329",
      "parents": [
        "1758dbaa3b69bd6e95fb501c40f044f751557e76"
      ],
      "author": {
        "name": "Thomas Ries",
        "email": "tries@gmx.net",
        "time": "Thu Oct 27 17:43:38 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Nov 15 20:50:48 2011 +0400"
      },
      "message": "ospfd: improve fix to CVE-2011-3326 (BZ#586)\n\nMake ospf_flood() propagate error returned by ospf_lsa_install() further\nto properly discard the malformed LSA, not just prevent the immediate\ncrash.\n"
    },
    {
      "commit": "3aad46bdaa0a2700e43252904b9481750c8cb45d",
      "tree": "2f98b0538dc45324910201ee445460a68f6e5389",
      "parents": [
        "52ecbbea36439758590f0c31a0ec147fec041d7a"
      ],
      "author": {
        "name": "YAMAMOTO Shigeru",
        "email": "shigeru@iij.ad.jp",
        "time": "Wed Sep 28 21:00:14 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Sep 29 16:27:29 2011 +0400"
      },
      "message": "ospfd: fix regression in recent commit\n\ncommit \u0027717750433839762d23a5f8d88fe0b4d57c8d490a\u0027 causes SEGV error,\nwhen \u0027oi \u003d ospf_if_lookup_recv_if (ospf, iph-\u003eip_src, ifp);\u0027 returns\nNULL.\n\n* ospf_packet.c\n  * ospf_read(): change a place of calling \u0027ospf_verify_header()\u0027\n"
    },
    {
      "commit": "52ecbbea36439758590f0c31a0ec147fec041d7a",
      "tree": "7bbf3187dbace4a7e51f45826920f1cc6138beae",
      "parents": [
        "4b4e07d2d83bdbe46ccf4b4a2fd2aa3842370098"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Sep 15 15:40:47 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:46:14 2011 +0400"
      },
      "message": "ospfd: remove unused macro\n"
    },
    {
      "commit": "bcc6c59ac5e9c1e8cf9693b4768f6b8cad5e559a",
      "tree": "110dc04ffd64f9a259015231981165e92a225502",
      "parents": [
        "e6ec1c3648cf3304c1a36341487659aadb9dce95"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Sep 10 23:29:19 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:43:27 2011 +0400"
      },
      "message": "ospfd: spelling\n"
    },
    {
      "commit": "171c9a996dd75a8b9aa596288c974f9ac0fbc5d6",
      "tree": "61c7aae794eee1d93fb4bafaca4e73c16bc3b947",
      "parents": [
        "7dbeea9d4f43fda84971d0bcffb6da88228dab53"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Sat Sep 10 16:40:23 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:42:52 2011 +0400"
      },
      "message": "ospfd: use existing macro for consistency\n"
    },
    {
      "commit": "05b7709dad416146376cc4f41db0c866b3738f5b",
      "tree": "bf17ceea5864f3bd4d6beb0a5dff4ba5b718b339",
      "parents": [
        "10d04cdb4198b69073ea0cdd4c26a64d6697b33e"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Aug 23 11:36:27 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:41:00 2011 +0400"
      },
      "message": "ospfd: sizing macros cleanup\n\n* ospf_spf.c\n  * ROUTER_LSA_TOS_SIZE: prepend OSPF_ and move to ospf_lsa.h\n  * ROUTER_LSA_MIN_SIZE: replace with existing OSPF_ROUTER_LSA_LINK_SIZE\n"
    },
    {
      "commit": "69bf3a39931ce61a92fb04d8888b4655fd5620a2",
      "tree": "e49dae20b1dbc0d1ee37121cd45c75d94290bdd1",
      "parents": [
        "ea4021984f9eec3f2a85551ae0822e1dff0ed2bc"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Aug 18 20:22:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:37:35 2011 +0400"
      },
      "message": "lib: simplify interface of setsockopt_multicast_ipv4().\n\n* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all\n  non-ancient OSes can use it anyway), and if_addr parameter (the address\n  of the interface) is now gone. (setsockopt_ipv4_multicast_if):\n  IP_MULTICAST_IF processing moved to this new function\n\n* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,\n  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),\n  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,\n  rip_interface_new): adapt to the new interface\n"
    },
    {
      "commit": "3c9cfcdebf680c1d2c0e6b69cb4e11885a049e05",
      "tree": "c374a8a8d26ed9481e78828b96f7480574521197",
      "parents": [
        "c31e5726bece392e1d20081c712482e9954fec66"
      ],
      "author": {
        "name": "Alexandre Chappuis",
        "email": "alc@open.ch",
        "time": "Tue Aug 02 17:37:39 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 20:45:22 2011 +0400"
      },
      "message": "ospfd: remove useless RFC1583 check\n\n* ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from\n  ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set.\n  Therefore, the check that the flag is set doesn\u0027t make sense at all\n  and it can consequently be removed without doing any harm.\n\nSigned-off-by: Alexandre Chappuis \u003calc@open.ch\u003e\nSigned-off-by: Roman Hoog Antink \u003crha@open.ch\u003e\n"
    },
    {
      "commit": "717750433839762d23a5f8d88fe0b4d57c8d490a",
      "tree": "aea292ef6dab658197d1df6c9a5bf3f3925013ad",
      "parents": [
        "61ab0301606053192f45c188bc48afc837518770"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:18:02 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:54 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)\n\nThis vulnerability (CERT-FI #514838) was reported by CROSS project.\n\nThe error is reproducible only when ospfd debugging is enabled:\n  * debug ospf packet all\n  * debug ospf zebra\nWhen incoming packet header type field is set to 0x0a, ospfd will crash.\n\n* ospf_packet.c\n  * ospf_verify_header(): add type field check\n  * ospf_read(): perform input checks early\n"
    },
    {
      "commit": "61ab0301606053192f45c188bc48afc837518770",
      "tree": "b7d9037390cd7beefcd7c1c54d2573ef92af80cd",
      "parents": [
        "6b161fc12a15aba8824c84d1eb38e529aaf70769"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 13:17:52 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:42 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3325 part 1 (OSPF header underrun)\n\nThis vulnerability (CERT-FI #514838) was reported by CROSS project.\n\nWhen only 14 first bytes of a Hello packet is delivered, ospfd crashes.\n\n* ospf_packet.c\n  * ospf_read(): add size check\n"
    },
    {
      "commit": "6b161fc12a15aba8824c84d1eb38e529aaf70769",
      "tree": "abd6c391a491495c70203420e5d91dbcdf282383",
      "parents": [
        "94431dbc753171b48b5c6806af97fd690813b00a"
      ],
      "author": {
        "name": "CROSS",
        "email": "info@codenomicon.com",
        "time": "Mon Sep 26 13:17:21 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Sep 26 18:46:28 2011 +0400"
      },
      "message": "ospfd: CVE-2011-3326 (uknown LSA type segfault)\n\nThis vulnerability (CERT-FI #514837) was reported by CROSS project.\nThey have also suggested a fix to the problem, which was found\nacceptable.\n\nQuagga ospfd does not seem to handle unknown LSA types in a Link State\nUpdate message correctly. If LSA type is something else than one\nsupported\nby Quagga, the default handling of unknown types leads to an error.\n\n* ospf_flood.c\n  * ospf_flood(): check return value of ospf_lsa_install()\n"
    },
    {
      "commit": "8ced4e82e6f417b13f4bfc09018fc51fd31058e2",
      "tree": "9d744d6f95473a0b8d49338ee502dfb765e00f5f",
      "parents": [
        "7e924e11a965fc1053a16945ace10c9bd1d868f8",
        "0150c9c969cfbacb28fa9e05c8bf7f65448d9914"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Jul 13 13:20:06 2011 -0400"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Wed Jul 13 13:20:06 2011 -0400"
      },
      "message": "Merge remote-tracking branch \u0027polymorf/master\u0027\n"
    },
    {
      "commit": "072990e22e66ed9a15261b70658dc4a8801975b5",
      "tree": "6fd4e1dcfb4d076a5c14ab148da71679b06a6322",
      "parents": [
        "8f6f78a761fc66f9668b68810a1bac032227b2d1"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Apr 11 16:28:16 2011 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Apr 13 15:13:33 2011 +0100"
      },
      "message": "ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change\n\n* ospf_apiserver.{c,h}: (ospf_apiserver_lsa_refresher) refreshers must now\n  return the refreshed LSA.\n* ospf_te.{c,h}: (ospf_mpls_te_lsa_refresh) ditto\n* ospf_api.c: trivial compiler warning fix\n"
    },
    {
      "commit": "d71ea65270408a45e4bec036671ec73b24b994b4",
      "tree": "8690d8a3e447ececf09d7a760af66703b7268f4d",
      "parents": [
        "36de261b57eab7a7539fb6527a1f02f3898cbafd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 22 15:23:55 2011 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Mar 22 15:23:55 2011 +0000"
      },
      "message": "ospfd: Compile fix for opaque support\n\n* ospfd: Refresher logic cleanup broke OSPF opaque, which does its own thing\n  with regard to refresher logic and which also, in the protocol, requires\n  implementations to keep state of which OI an LSA is received on (rather\n  than providing information in the LSA to allow it to be looked up - as\n  other LSAs requiring such assocation were careful to do).\n* ospf_lsa.h: (struct ospf_interface) Add back the pointer to oi, but only\n  for type-9 now.\n* ospf_nsm.c: (ospf_db_summary_add) check the oi actually exists first -\n  doesn\u0027t obviate the need for opaque to ensure oi pointers get cleaned up\n  when ospf_interfaces disappear.\n* ospf_opaque.{c,h}: (ospf_opaque_functab,ospf_opaque_lsa_refresh) Refresher\n  LSA functions now need to return the LSA to the general refresh logic,\n  to indicate whether the LSA was refreshed.\n"
    },
    {
      "commit": "4dd87df5af8a59174362e44f83df11f12457c8b4",
      "tree": "bec3ba26fcf730d6348567ddd530e74846af824b",
      "parents": [
        "dfbd5176ea863e378999c03314dc42adfdd4e424"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Apr 15 08:11:51 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:19 2010 +0000"
      },
      "message": "ospfd: Remove oi field from LSA, have network_lsa_refresh look up when needed\n\n* ospf_lsa.h: (struct ospf_lsa) remove oi pointer\n* ospf_lsa.c: (ospf_network_lsa_refresh) instead of keeping a pointer, just\n  lookup the oi when it\u0027s needed. This decouples network LSA from oi lifetime\n  and avoids having to invalidate pointers in LSAs when an oi changes,\n  simplifying the code.\n"
    },
    {
      "commit": "dfbd5176ea863e378999c03314dc42adfdd4e424",
      "tree": "f18faa60d794ef5feb628f2e089e419bb3c5dec2",
      "parents": [
        "02d942c9d4afabf04bd781f0e1e5e8aa36945df2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Apr 14 10:32:12 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:19 2010 +0000"
      },
      "message": "ospfd: potential fix for router-id change assert on refresh cleanup patch\n\n* ospf_lsa.c: (various) unregister LSAs from refresher before flushing.\n"
    },
    {
      "commit": "02d942c9d4afabf04bd781f0e1e5e8aa36945df2",
      "tree": "1874fc70a20b6b0407e808c926c362aa03415662",
      "parents": [
        "c363d3861b5384a31465a72ddc3b0f6ff007a95a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 24 23:36:20 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:19 2010 +0000"
      },
      "message": "ospfd: Fix maxage/flush to not try flood twice, remember maxages for longer\n\n2006-05-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix confusion around MaxAge-ing and problem with\n\t  high-latency networks. Analysis and suggested fixes by\n\t  Phillip Spagnolo, in [quagga-dev 4132], on which this commit\n\t  expands slightly.\n\t* ospf_flood.{c,h}: (ospf_lsa_flush) new function.\n\t  Scope-general form of existing flush functions, essentially\n\t  the dormant ospf_maxage_flood() but without the ambiguity of\n\t  whether it is responsible for flooding.\n\t* ospf_lsa.c: (ospf_lsa_maxage) Role minimised to simply setup\n\t  LSA on the Maxage list and schedule removal - no more.\n\t  ospf_lsa_flush* being the primary way to kick-off flushes\n\t  of LSAs.\n\t  Don\u0027t hardcode the remover-timer value, which was too\n\t  short for very high-latency networks.\n\t  (ospf_maxage_lsa_remover) Just do what needs to be done to\n\t  remove maxage LSAs from the maxage list, remove the call\n\t  to ospf_flood_through().\n\t  Don\u0027t hardcode remove-timer value.\n\t  (ospf_lsa_{install,flush_schedule}) ospf_lsa_flush is the correct\n\t  entrypoint to flushing maxaged LSAs.\n\t  (lsa_header_set) Use a define for the initial age, useful for\n\t  testing.\n\t* ospf_opaque.c: (ospf_opaque_lsa_refresh) ditto.\n\t  (ospf_opaque_lsa_flush_schedule) ditto.\n\t* ospfd.h: ({struct ospf,ospf_new}) Add maxage_delay parameter,\n\t  interval to wait before running the maxage_remover. Supply a\n\t  suitable default.\n\t  Add a define for OSPF_LSA_INITIAL_AGE, see lsa_header_set().\n"
    },
    {
      "commit": "c363d3861b5384a31465a72ddc3b0f6ff007a95a",
      "tree": "3fcbfc071dc2a376979ca6a80d06599a5b574047",
      "parents": [
        "7eb5b47e54169ac0da40ed1a6760db5d5f915a4d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 24 22:42:13 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:19 2010 +0000"
      },
      "message": "ospfd: Unify router and network LSA refresh logic with general refresher\n\n* (general) Get rid of the router and network LSA specific refresh timers\n  and make the general refresher do this instead. Get rid of the twiddling\n  of timers for router/network LSA that was spread across the code.\n\n  This lays the foundations for future, general LSA refresh improvements,\n  such as making sequence rollover work, and having generic LSA delays.\n\n* ospfd.h: (struct ospf) Bye bye to the router-lsa update timer thread\n  pointer.\n  (struct ospf_area) and to the router-lsa refresh timer.\n* ospf_interface.h: Remove the network_lsa_self timer thread pointer\n* ospf_lsa.h: (struct ospf_lsa) oi field should always be there, for benefit\n  of type-2/network LSA processing.\n  (ospf_{router,network}_lsa_{update_timer,timer_add}) no timers for these\n  more\n  (ospf_{router,network}_lsa_update) more generic functions to indicate that some\n  router/network LSAs need updating\n  (ospf_router_lsa_update_area) update router lsa in a particular area alone.\n  (ospf_{summary,summary_asbr,network}_lsa_refresh) replaced by the general\n  ospf_lsa_refresh function.\n  (ospf_lsa_refresh) general LSA refresh function\n"
    },
    {
      "commit": "7eb5b47e54169ac0da40ed1a6760db5d5f915a4d",
      "tree": "8d70f87bea20b07f2bbc753a3661c9be9058e1ef",
      "parents": [
        "aa276fd783f5cdbeefe22bf54109fe523a465e07"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Oct 13 16:13:13 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:13:14 2010 +0000"
      },
      "message": "ospfd: Remember network LSA sequence numbers across up/downs of an interface\n\n* ospf_interface.h: (struct ospf_if_params) add field for saved network LSA\n  seqnum\n* ospf_interfa.c: (ospf_new_if_params) init network_lsa_seqnum field to\n  initial seqnum - doesnt matter though.\n* ospf_lsa.c: (ospf_network_lsa_new) check for any saved sequence number,\n  and use if it exists.  Save the result back. This should help avoid needless\n  round of LSUpdate/LSRequests when a neighbour has to tell the originator\n  \"uhm, i have something newer than that already\".\n* ospf_vty.c: (show_ip_ospf_interface_sub) Show the saved network LSA seqnum\n"
    },
    {
      "commit": "aa276fd783f5cdbeefe22bf54109fe523a465e07",
      "tree": "7427b7bdfd25a9f07c72461d56c3981db9761227",
      "parents": [
        "57c5c6526df82970ca24293798d278862cf55106"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jan 08 17:11:15 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:19 2010 +0000"
      },
      "message": "ospfd: Prioritise hellos for sending by queueing to head of output buffer\n\n* It\u0027s possible for the packet output buffer to be filled up with a long\n  series of non-Hello packets in between Hellos packets, such that the\n  router\u0027s neighbours don\u0027t receive the Hello packet in time, even though\n  the hello-timer ran at about the right time. Fix this by prioritising\n  Hello packets, letting them skip the queue and go ahead of any packets\n  already on the queue.\n\n  This problem can occur when there are lots of LSAs and slow links.\n\n* ospf_packet.h: (ospf_hello_send_sub) not used outside of ospf_packet.c\n* ospf_packet.c: (ospf_fifo_push_head) add packet to head of fifo (so its\n  no longer really a fifo, but hey)\n  (ospf_packet_add_top) add packet to top of the packet output queue.\n  (ospf_hello_send_sub) Put Hello\u0027s at the top of the packet output queue.\n  make it take in_addr_t parameter, so that this\n  ospf_hello_send can re-use this code too.\n  (ospf_hello_send) consolidate code by using ospf_hello_send_sub\n  (ospf_poll_send,ospf_hello_reply_timer) adjust for ospf_hello_send_sub.\n"
    },
    {
      "commit": "57c5c6526df82970ca24293798d278862cf55106",
      "tree": "91847b2de0f333fa3a45691054f38c82f44f7609",
      "parents": [
        "94b6bfd28357dfa5a4f478b7393522816976c0b0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jan 07 06:12:53 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: Reset neighbour inactivity timer for any packet arrival\n\n* The hello protocol monitors connectivity in 2 different ways:\n\n  a) local -\u003e remote\n  b) remote -\u003e local\n\n  Connectivity is required in both directions (2-way) for adjacencies to\n  form.\n\n  The first requires a round-trip to detect, and is done by advertising\n  which other hosts a router knows about in its hello messages.  This allows\n  a host to detect which other routers are and are not receiving its\n  message.  If a remote neighbour delists the local router, then the local\n  router raises a \"1-Way Received\" event.\n\n  The latter is straight-forward, and is detected by setting a timer for the\n  neighbour. If another Hello packet is not received within this time then\n  the neighbour is dead, and a separate \"Inactive\" event is raised.\n\n  These are 2 different and relatively independent measures.\n\n  Knowing that we can optimise the 2nd, remote-\u003elocal measure and reset\n  the timer when /any/ packet arrives from that neighbour. For any packet\n  is as good as a Hello packet. This can help in marginal situations, where\n  the number of protocol messages that must be sent sometimes can exceed\n  the capacity of the network to transmit the messages within the configured\n  dead-time. I.e. an OSPF network with lots of LSAs, slow links and/or\n  slow hosts (e.g. O(10k) LSAs, O(100kbit) links, embedded CPUs, and O(10s)\n  dead-times).\n\n  This optimisation allows an OSPF network to run closer to this margin,\n  and/or allows networks to perhaps better cope with rare periods of\n  exceptional load, where otherwise they would not.\n\n  It\u0027s fully compatible with plain OSPF implementations and doesn\u0027t\n  prejudice dead-neighbour detection.\n\n* ospf_nsm.h: Rename HelloReceived event to PacketReceived.\n* ospf_nsm.c: (nsm_hello_received) -\u003e nsm_packet_received\n* ospf_packet.c: Schedule PacketReceived whenever a valid message is\n  received.\n"
    },
    {
      "commit": "94b6bfd28357dfa5a4f478b7393522816976c0b0",
      "tree": "8c94b1e1730a3db7cd0c5371495a944745d8aa20",
      "parents": [
        "e8f2226195e86f90f2409549ad8a8e5c8d64d23b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sat Jan 09 14:11:02 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: the maxage_lsa_remover should check whether it needs to yield the cpu\n"
    },
    {
      "commit": "e8f2226195e86f90f2409549ad8a8e5c8d64d23b",
      "tree": "e06409c762058421671fa7eacedeeccd364d871d",
      "parents": [
        "6634974d68b8cc78cdde1104636fe97d7e310845"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Apr 13 22:43:34 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: Fix various route_unlock discrepencies\n\n* ospf_ase.c: (ospf_ase_calculate_route) Fix compiler warning about eval\n  needing brackets.\n  (various) add defensive asserts.\n* ospf_lsdb.c: (ospf_lsdb_add) add missing node unlock if same lsa already\n  was indexed.\n  (ospf_lsdb_delete) check it\u0027s actually the same as specified lsa before\n  deleting\n  (ospf_lsdb_lookup_by_id_next) fix another corner case - no result \u003d\u003e\n  don\u0027t go on.\n"
    },
    {
      "commit": "6634974d68b8cc78cdde1104636fe97d7e310845",
      "tree": "ac049e9e0e61ba90ee3790e4162c561b32894e1b",
      "parents": [
        "8a81ee114a122966cb396d53dd8fcbda2eb619f5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Apr 13 22:33:54 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: fix lsa_refresh_walker unlock before use bug\n\n* ospf_lsa.c: (ospf_lsa_refresh_walker) fix an \"unlock before use\" bug\n  (various) add asserts for lsa refcounting.\n"
    },
    {
      "commit": "8a81ee114a122966cb396d53dd8fcbda2eb619f5",
      "tree": "1d797e811dd2dc0971ecb8b6585b47e6524f2275",
      "parents": [
        "2c9f8e36c4de4bb1412364b79c3a44881208266e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jan 24 21:34:54 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: interface code should leave  network_lsa_self alone\n\n* ospf_interface.c: (ospf_if_{new,cleanup}) don\u0027t touch the network_lsa_self,\n  ISM and NSM take care of cleaning it up if needs be + we want to keep\n  network_lsa_self around when possible for the the seqnum.\n\n  This shouldn\u0027t really make much difference though, particularly as we have\n  a separate sequence number memory mechanism.\n"
    },
    {
      "commit": "2c9f8e36c4de4bb1412364b79c3a44881208266e",
      "tree": "71b5273262a386644ced282b8b257b5201ffee7c",
      "parents": [
        "cfd670f3af25dfc34d5c06e30d21160e3dfb6421"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Jan 11 16:22:12 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:18 2010 +0000"
      },
      "message": "ospfd: OSPF_MIN_LS_ARRIVAL compare should be \u003e\u003d to match ospf_flood\n\n* ospf_packet.c: (ospf_ls_upd) the corresponding test on the arrival side\n  in (ospf_flood) is \u003c, so this should be \u003e\u003d, not \u003e, purely for consistency.\n\n  There is no practical effect here though.\n"
    },
    {
      "commit": "cfd670f3af25dfc34d5c06e30d21160e3dfb6421",
      "tree": "6b2888d0ac50a60416a92a7226cf513b0537f14f",
      "parents": [
        "ec70497bc5eac732139c3d94987ecb6691557795"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Apr 15 11:39:05 2010 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:17 2010 +0000"
      },
      "message": "ospfd: ospf_if_free can leave dangling references on ISM events - cancel them\n\n* ospf_interface.c: (ospf_if_free) events with dangling pointers left\n  scheduled can be seriously bad for ospfd\u0027s health. Cancel the event.\n"
    },
    {
      "commit": "ec70497bc5eac732139c3d94987ecb6691557795",
      "tree": "717509c323b8a44a1ac48a38b2f4a6faaa6fc022",
      "parents": [
        "f8416810aad4cba6f622c6b3f9352abdd54cd01e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Dec 06 12:21:52 2010 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Dec 08 17:11:17 2010 +0000"
      },
      "message": "ospfd: Lower level of some common messages from info to debug\n\n* ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be\n  debug log level, not info, to avoid spamming \u0027terminal monitor\u0027\n"
    },
    {
      "commit": "0150c9c969cfbacb28fa9e05c8bf7f65448d9914",
      "tree": "f24def69d4586edeefd36be0eadbdb1bc6f975a0",
      "parents": [
        "e26873fd8f0c4306eff65de94a45b4114fc81b98"
      ],
      "author": {
        "name": "David BÉRARD",
        "email": "contact@davidberard.fr",
        "time": "Tue May 11 10:17:53 2010 +0200"
      },
      "committer": {
        "name": "David BÉRARD",
        "email": "contact@davidberard.fr",
        "time": "Tue May 11 10:17:53 2010 +0200"
      },
      "message": "Fix ip_len byte order in DragonFly\u0027s raw socket\n"
    },
    {
      "commit": "46154fe3675df5417a712285b66fd12bd1b4fc6d",
      "tree": "f661aa3353d2130100746ce9819b596c27895bc4",
      "parents": [
        "45acaa0a4cbb4b61c1e4cfcc8f8a534f4fdccfe5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed Apr 14 16:01:25 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:56:41 2010 -0400"
      },
      "message": "ospfd: Only refresh external default route once.\n\n* ospf_zebra.c: (ospf_distribute_list_update_timer) forces a\n  refresh of default route each time it finds a default prefix.\n  This is suboptimal, just record that it needs to be done and\n  do it once.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "45acaa0a4cbb4b61c1e4cfcc8f8a534f4fdccfe5",
      "tree": "03c27c042be415bcec1d1f0922acf0dd424378b6",
      "parents": [
        "274d3f090df91fc5f8d4f26a2823634efa4af461"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Apr 14 11:05:28 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:53:28 2010 -0400"
      },
      "message": "ospfd: Make sure ospf_distribute_list_update_timer() eventually runs.\n\n* ospf_zebra.c: (ospf_distribute_list_update_timer)\n   If there are updates to the distribute list every 5 second or less,\n   ospf_distribute_list_update_timer() will never run as the timer gets\n   rearmed for each update. This fixes it by never rearming an active\n   distribute list timer.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "274d3f090df91fc5f8d4f26a2823634efa4af461",
      "tree": "bcdbc9bc1eea38e2441d0c53152325e41940b122",
      "parents": [
        "515b9424d4106ff5ccef4f18030a3ca69d38a178"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Apr 14 11:05:27 2010 +0200"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@ir.bbn.com",
        "time": "Sun Apr 18 14:35:36 2010 -0400"
      },
      "message": "ospfd: Make sure all external routes are updated.\n\nRoman Hoog Antink \u003crha@open.ch\u003e\treports:\n\nWhen adding a connected route (using vtysh, without restart) to the\nredistribution access list of ospfd, while static routes already exist,\nthe update timer ospf_distribute_list_update_timer() is being run for\nstatic routes only. That way, the connected route never appears in the\nOSPF database, until quagga is completely restarted.\n\nThe update timer for connected routes is cancelled in\nospfd/ospfd_zebra.c:ospf_distribute_list_update():976, were a new timer\nis scheduled for static routes, caused by the loop in ospf_filter_update().\n\n * ospf_zebra.c: (ospf_distribute_list_update_timer) make it\n   refresh all external routes. This fixes the problem\n   reported by Roman.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n"
    },
    {
      "commit": "2cd754de60210748e61069fed2c9d4086d24c21e",
      "tree": "1f9ef18fb413e0d786623eb857eea894a9900ff9",
      "parents": [
        "efbbcaf1aea686d118019514dcde92b13c92b0fc"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 14 16:26:12 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 14 16:26:12 2010 +0300"
      },
      "message": "ospfd: Fix debug messages that were masked by DISCARD_LSA\n\n* ospf_packet.c: (ospf_ls_upd) DISCARD_LSA continues, and so should be\nafter debug messages, not before them.\n"
    },
    {
      "commit": "efbbcaf1aea686d118019514dcde92b13c92b0fc",
      "tree": "97965a22204c265ac061f40ea9e461e88c3cd2ea",
      "parents": [
        "0917f7e7c5920b70295c44bd8aad537bc3ee8581"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@jakma.org",
        "time": "Thu Jan 14 16:19:40 2010 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 14 16:19:40 2010 +0300"
      },
      "message": "ospfd: remove unneeded memset from a very hot function\n\n* ospf_lsdb.c: (lsdb_prefix_set) memset is unneeded, as all fields are\ninitialised explicitly, and this function can be in the top-3 of a\nprofile when there are a lot of LSAs.\n"
    },
    {
      "commit": "8b6a15b2821e687177cef3ff057e1c4ec76df888",
      "tree": "cd271d0dcf5233226ded94dfbd96b687428b196a",
      "parents": [
        "3408afe2acf34729730a7dc1efdd587c561b6f59"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:25:04 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:25:04 2009 +0300"
      },
      "message": "ospfd: VTY strings cleanup\n\nSeveral bits of text can be local or are unused.\n"
    },
    {
      "commit": "3408afe2acf34729730a7dc1efdd587c561b6f59",
      "tree": "65ac57e811f0d5f6ce6fce6d4c78c6cd1bc33e79",
      "parents": [
        "917e29954e652518326dbbdb90325a978ef69535"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:18:26 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:18:26 2009 +0300"
      },
      "message": "ospfd: comment out unused function\n"
    },
    {
      "commit": "917e29954e652518326dbbdb90325a978ef69535",
      "tree": "e3fe0929ed348060db1023ba500a9b33b58de275",
      "parents": [
        "a50c107e3fbdaaea78a12a868a3865fd25136ad2"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Dec 03 19:07:00 2009 +0300"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Dec 03 19:07:00 2009 +0300"
      },
      "message": "ospfd: make local functions static\n\nThis code is only used one place and can be made local.\nGcc is smart enough to inline local functions if it wants to.\n\nThe function also  has a big chunk of compatiablity code that\nis no longer used; since quagga is now in a version control system\nthe source does not need to be used as a historical reference.\n"
    },
    {
      "commit": "827341b797f602f4cd7932a777f819b530521b05",
      "tree": "e1eb4c1f91c11f56cdc7daa41fc2082b64a522bf",
      "parents": [
        "50adf7832004191cdaf5a908bd9a9c0b2373e993"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Mon Sep 28 19:34:59 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Mon Sep 28 19:34:59 2009 +0400"
      },
      "message": "[ospfd] enable more OSPF cost command aliases\n\nThe following syntax forms were not historically supported\nby Quagga, although IOS accepted them w/o a problem:\n\nno ip ospf cost \u003c1-65535\u003e\nno ospf cost \u003c1-65535\u003e\nno ip ospf cost \u003c1-65535\u003e A.B.C.D\nno ospf cost \u003c1-65535\u003e A.B.C.D\n\nFrom now on Quagga also supports these variants.\n"
    },
    {
      "commit": "27f5dc8120e1c6902e29d86cf0d77b82cf3848c0",
      "tree": "a9058ac54bf22840409d52aa761fa215cc7abb31",
      "parents": [
        "5d8de93a84b2afc4202d3284eb9e57672e2551b3"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sat Aug 22 14:57:54 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 13:03:49 2009 +0100"
      },
      "message": "ospfd: Make sure priority is respected.\n\n* ospf_ism.c (ospf_dr_eligible_routers) should test for priority \u003e 0 instead\n  of !\u003d 0 as ospf_nbr_new () initially sets prio to -1\n"
    },
    {
      "commit": "5d8de93a84b2afc4202d3284eb9e57672e2551b3",
      "tree": "9a17c616907cd000efc46873994464409c575099",
      "parents": [
        "065de90380c88d9fcc116627f714bed9984c2723"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Fri Aug 07 13:48:15 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 28 12:29:38 2009 +0100"
      },
      "message": "ospfd: Tighten up the connected check for redistribution\n\n* ospf_zebra.c: (ospf_distribute_check_connected) check to make filter out\n  routes matching connected routes was matching against OSPF networks, which\n  can be far more general than the actual connected interfaces. Fix.\n"
    },
    {
      "commit": "065de90380c88d9fcc116627f714bed9984c2723",
      "tree": "79061a2699e0dc3e87c218b3b57c2f0577d5a69a",
      "parents": [
        "5bd5881838c22e075c3d0c245a8952a55e9dca38"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Fri Aug 07 11:13:49 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 13 10:21:13 2009 +0100"
      },
      "message": "all: check return value from daemon() call\n\n* */*main.c: (main) Current versions of Gcc warn if the return value for\n  daemon() is not checked.  So add a simple test and exit on failure.\n\n"
    },
    {
      "commit": "3106a03215f5f09c2c0d427fa706fff52ef3cb37",
      "tree": "378e2b80de22275e91157fd0b9db5248b5681eea",
      "parents": [
        "5996e0df2eb325445114517209cd24f37d91774a"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu Aug 06 12:58:05 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Aug 13 09:58:46 2009 +0100"
      },
      "message": "ospfd: fix performance problem with redistribute delete\n\nDoing redistribute delete with full BGP table was taking\n30 minutes, this drops it down to less than a second.\n\n* ospf_lsa.c: (ospf_lsa_maxage) When flushing lots of entries the\n  performance is terrible because it looks up each LSA entry through\n  ospf_lsa_maxage_exist before deleting causing O(N^2) performance.  Use a\n  new OSPF_LSA_MAXAGE flag instead of scan - and maintain it.\n  (ospf_lsa_maxage_exist) removed\n  (ospf_lsa_maxage_delete) maintain OSPF_LSA_MAXAGE flag\n"
    },
    {
      "commit": "5996e0df2eb325445114517209cd24f37d91774a",
      "tree": "56bee1d2ab48d4b7a5e163747b54d7537f4df9a3",
      "parents": [
        "11637435b2d74702296b0522500d03b0395554a2"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jul 27 12:42:35 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 11 17:33:27 2009 +0100"
      },
      "message": "ospfd: Make sure route table is recalculated.\n\nIn some cases ospfd does not recalc the route table. This\nhappens when ospfd receives an old LSA which will trigger\nrecalc but the this recalc will fail because all interfaces\nisn\u0027t up yet. Next LSA that is originated matches the old one\nso no recalc will be performed. This problem has been observed\nwhen there are only 2 ppp I/Fs in an area, both go down at the\nsame time, then they come up again with a few seconds apart.\n\n* ospf_lsa.c: (ospf_{router,network}_lsa_install) avoid a needless scheduling\n  of SPF.\n  (ospf_lsa_different) fix bug in LSA comparison that would lead to the\n  described failure to schedule SPF.\n"
    },
    {
      "commit": "11637435b2d74702296b0522500d03b0395554a2",
      "tree": "c9e5fd2cc9188f7a0702eebc7f6a24c3d4dc495d",
      "parents": [
        "9d878775ff5c05afea522b60f014b88822d19e1b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 11 12:25:42 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 11 12:25:42 2009 +0100"
      },
      "message": "ospfd: Make \"Packet ... received on wrong link\" conditional on debug\n\n* ospf_packet.c: make this message conditional on \u0027debug ospf event\u0027, as it\n  be easily triggered with, e.g., multiple subnets sharing same physical\n  network. E.g, see bug #532.\n"
    },
    {
      "commit": "5372510d109d87b94d6094d095dd4e0e02eaf32a",
      "tree": "9c112ea23db64e3d2f2978e8c7df575cbd3a14a3",
      "parents": [
        "4ca15d4a658dca9663b7dea2475edfe6814ef847"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 03 16:34:16 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 03 16:52:38 2009 +0100"
      },
      "message": "ospfd: neuter some compiler warnings\n\n* ospf_lsa.c: (link_info_set) Use %zd for size_t - C99 is old enough now.\n  Lots of similar warnings all over the code.\n  (ospf_lsa_translated_nssa_compare) Unused func - delete.\n"
    },
    {
      "commit": "4ca15d4a658dca9663b7dea2475edfe6814ef847",
      "tree": "a756f68b118cf641f8f91966e771345d4a177b76",
      "parents": [
        "a8ba847ff96b41e06770d4987b15707890ed5807"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 03 15:16:41 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 03 16:52:38 2009 +0100"
      },
      "message": "ospfd: update some comments\n\n* ospf_{spf,lsa}.c: remove out of date comment; add comment on some\n  non-obvious code; Make note of a possible scaling problem.\n"
    },
    {
      "commit": "a8ba847ff96b41e06770d4987b15707890ed5807",
      "tree": "07864eb958853e5ad7b2616c9b7bc5259a8ae503",
      "parents": [
        "bd5403778b0d96258730050e4526c7c72903e60b"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jul 27 12:42:34 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Aug 03 16:52:30 2009 +0100"
      },
      "message": "ospfd: Change struct ospf_path *oi to ifindex.\n\n* global: In struct ospf_path, change struct ospf_interface *oi to int\n  ifindex.  It is unsafe to reference *oi as an ospf interface can be\n  deleted under your feet. Use a weak reference instead.\n"
    },
    {
      "commit": "bd5403778b0d96258730050e4526c7c72903e60b",
      "tree": "bcd21a0f78175f0693857bc7eaadef30d8b3c4a6",
      "parents": [
        "4a5f432fa07f33da5ad05d18e4ba81d57b44af8e"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jul 27 12:42:31 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jul 30 16:18:30 2009 +0100"
      },
      "message": "ospfd: Discriminate better when selecting links between vertices in SPF\n\n* ospf_spf.c: (ospf_get_next_link) One must check the vertex type, Router or\n  Network, to select type link to match against.  Link type 1 has neighbour\n  router ID in link_id and link type 2 has IP address of DR.  Since router\n  id may have same value as an existing IP address one risks matching a\n  router ID against a DR.\n"
    },
    {
      "commit": "05cf46badbad99b76c4e974c7306c14494d1000e",
      "tree": "dd1fd18afc3d7ef6f92281c1c6fb0bc8ebd6a58b",
      "parents": [
        "f0f63841582ed97362619a53fb711747f09d961b"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jul 27 12:42:30 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 18:47:43 2009 +0100"
      },
      "message": "ospfd: Make ospf_if_lookup_recv_if() find the right unnumbered i/f\n\nThis function will return the interface for the first matching\nremote address for PtP i/f\u0027s. That won\u0027t work for multiple\nunnumbered i/f\u0027s as these may all have the same address.\n\nPass in the struct interface pointer, ifp, to find the\ncorrect set of oi\u0027s to search in. This also reduces the\nsize of the search list, making it faster.\n\n* ospfd/ospf_interface.c: Add struct interface * param to\n  ospf_if_lookup_recv_if() to select the right list to search in.\n* ospfd/ospf_interface.h: ditto.\n* ospfd/ospf_packet.c: Pass new ifp argument to ospf_if_lookup_recv_if()\n"
    },
    {
      "commit": "f0f63841582ed97362619a53fb711747f09d961b",
      "tree": "bb663103d3b25064143685a4f3f40cd008b3cc0f",
      "parents": [
        "2158ad2359a370dd349f4543a2d5d535bb5a8770"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jul 27 12:42:29 2009 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 18:40:47 2009 +0100"
      },
      "message": "ospfd: export ospf_if_table_lookup() and use it in ospf_network_run_interface()\n\nMakes it possible to run OSPF on multiple PtP interfaces\nwith the same remote address.\n\n* ospfd/ospf_interface.c: Export ospf_if_table_lookup().\n* ospfd/ospf_interface.h: ditto.\n* ospfd/ospfd.c: (ospf_network_run_interface) Use ospf_if_table_lookup() to\n  determine whether OSPF is already configured for a subnet and interface.\n\n"
    },
    {
      "commit": "30d205909c5a81cc306b161c16abff0fd7f566a7",
      "tree": "6f7532a4336cf601bbeab07d2669639a05409dfd",
      "parents": [
        "d023aec49f70156d2ed894a8fba65bcfa221ff02"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jul 28 11:58:51 2009 +0100"
      },
      "message": "[global] interface flags format warnings\n\n*/*: ifp-\u003eflags is 64 bit unsigned which can not be handled by %l on 32\n     bit architectures - requires %ll and the appropriate cast.\n"
    },
    {
      "commit": "bd2462425205a681d75e04c94a94bf4cea5da58b",
      "tree": "326c2dde485eded444cde3db284aeb7a348892bf",
      "parents": [
        "650f76c2e1b0b12e1c46fdd3be22c5f505245d83"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Jan 05 17:44:46 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 26 16:12:19 2009 +0100"
      },
      "message": "[ospfd] Do not use stale Network/Router LSAs\n\nShould a self originated Network/Router LSA with higher\nLS seq. nr. be received we should flood and install it in\nthe LSDB but we cannot use it for our internal calculations\nas it is stale.\nReorginate an new LSA to replace the stale one as soon\nas possible.\n"
    },
    {
      "commit": "77a1c4e05ca5a7d7bf07456758f7c934ee867884",
      "tree": "47553373b16dd033a0866624dd54b8b851cbdb09",
      "parents": [
        "cbcd9bfc503f08b99f5360b1aae3a5362d25a665"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Sun Feb 01 11:12:11 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 25 15:36:08 2009 +0100"
      },
      "message": "[ospfd] compare ifIndex too when matching paths\n\nospf_path_lookup(), ospf_route_match_same() and\nospf_ase_route_match_same() needs to\ncompare if the interface matches too.\n"
    },
    {
      "commit": "3d8617b853af511ca5f019b2f51c7902e2689212",
      "tree": "bb366c8a716653d315f64457a9ea642a370170d3",
      "parents": [
        "f65431380428c3cb8eb5c0a0ac93debc30717a3f"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Feb 04 15:05:19 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 25 14:00:40 2009 +0100"
      },
      "message": "[ospfd] external LSA route_unlock_node() fixes\n\nA few route_unlock_node() calls was missing.\n"
    },
    {
      "commit": "f65431380428c3cb8eb5c0a0ac93debc30717a3f",
      "tree": "343c4b39fa516c0fc3a0640c9a8f9536c5b21d5f",
      "parents": [
        "dc26699a80eb7b40fb1c9026496cde2b80bf1335"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Nov 04 13:37:29 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 25 12:23:27 2009 +0100"
      },
      "message": "[ospfd] Fix a few LSA performance \"bugs\"\n\nospf_lsa_install() will calculate LSA checksum so no\nneed to do it before calling ospf_lsa_install().\n\nSet the OSPF_LSA_SELF_CHECKED flag on own LSA\u0027s to\nsave ospf_lsa_is_self_originated() some work.\n\nDo not memset() memory that is about to overwritten\nwith memcpy().\n"
    },
    {
      "commit": "dc26699a80eb7b40fb1c9026496cde2b80bf1335",
      "tree": "0b760da30cbf246882af85b9e47ccb46628fba17",
      "parents": [
        "c3a5606302777cdd33d4025fc30bed723fc84d79",
        "c9035ccd13078b6a5d53566979a66c1ac892b47a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 24 22:52:43 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 24 22:52:43 2009 +0100"
      },
      "message": "Merge remote branch \u0027origin/master\u0027\n"
    },
    {
      "commit": "3fc1eca92a7022f1c5b567505a7d86aab0d3cbd4",
      "tree": "38e59f306aab80e67321b600a17c6a9bf7d71931",
      "parents": [
        "2a71e9ce89c6f76c099dea67dddbe8da454d9de7"
      ],
      "author": {
        "name": "Tomasz Pala",
        "email": "gotar@pld-linux.org",
        "time": "Wed Jun 24 21:48:22 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Jun 24 21:49:53 2009 +0100"
      },
      "message": "[cleanup] Add log.h includes\n"
    },
    {
      "commit": "c9035ccd13078b6a5d53566979a66c1ac892b47a",
      "tree": "d144006c697fdf5aa06535cee1d89cdb9a359ec9",
      "parents": [
        "014b670e02cc1f38e8e4e786269fc1787412f9b7"
      ],
      "author": {
        "name": "Dmitry Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Wed Jun 24 20:14:30 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Wed Jun 24 20:14:30 2009 +0400"
      },
      "message": "[ospfd] discount IP header size from a new LSA pkt\n"
    },
    {
      "commit": "774eb1524c3a1e0a9567e6aff3315b4686ab3e75",
      "tree": "56cb71fbc9ec910e079b7bc7bbee47fafeb2d11c",
      "parents": [
        "5bc52c76c2816a3be9a033c3e5bf4fea1908e3cd"
      ],
      "author": {
        "name": "Dmitry Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Tue Jun 23 17:16:32 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Tue Jun 23 17:16:32 2009 +0400"
      },
      "message": "[ospfd] cancel OSPF timer hack in nsm_change_state\n\nThis piece of code causes all Quagga routers on a broadcast link to\nsend a HELLO packet simultaneously if they see a new neighbor. It also\nresets the HELLO timer, so all the quagga routers will continue to\nsend HELLO packets simultaneously in the future. This is not good\n(especially on networks with a lot of Quagga routers connected), and\nis explicitly discouraged by the OSPF standard, RFC 2328 (chapter\n4.4.Timers).\n\nI suggest to remove the code snippet, it does not provide much benefit\nanyway.\n"
    },
    {
      "commit": "c514adc61d56c3fb6fe5119a7b4b55c79a9c065d",
      "tree": "6b1ac86d90846505c6273ea1509172fb49c4944b",
      "parents": [
        "7ec573661ff046f6fa97d694de7a68dede2532fd"
      ],
      "author": {
        "name": "Jeremy Jackson",
        "email": "jerj@coplanar.net",
        "time": "Fri Jan 23 15:48:10 2009 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 19 15:03:31 2009 +0100"
      },
      "message": "[ospfd/BSD] add missing UINT16_MAX - picked up from FreeBSD ports patch\n\nShould probably have AC_TYPE_UINT16_T in configure.ac to make it really\nclean...  and a fresh import of gnulib, the existing copy of gnulib seems to\nbe manually put some stuff in zebra.h.  I\u0027m leaving that alone for now,\nsince a fresh import will probably clean up a lot of cruft and it would be a\nduplicated effort to fix some things now.\n\nThe FreeBSD port 0.99.11_1 files/patch-ospfd-ospfd.h can probably go away\nafter this is applied.\n"
    },
    {
      "commit": "c77cffdd69bf08ed54e390a3485cbd5024836a9a",
      "tree": "42225904923a4b3457edd13a0eb84f0ea8581441",
      "parents": [
        "c546afaed229106c2fcb54b57906414b9503dcc9"
      ],
      "author": {
        "name": "Jeremy Jackson",
        "email": "jerj@coplanar.net",
        "time": "Sun Dec 28 12:57:42 2008 -0500"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 22:11:41 2009 +0100"
      },
      "message": "[daemons/cleanup] Remove disabled log_mode argument support.\n\n* */*main.c: Seems that the actual code was removed previously, but the\n  argument processing code remained.\n"
    },
    {
      "commit": "7ba82f70ddf9abf99277b25cd54503a8517a0c15",
      "tree": "85ab34cd3d20d7ee28342614b62d26b32e7bd68a",
      "parents": [
        "b2d933f8280a4d9eee8a9330282e705514a96a03"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Fri May 15 10:47:45 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:30 2009 +0100"
      },
      "message": "[OSPF/cleanup] make message lists read only\n"
    },
    {
      "commit": "965f54f5ef0bd601cf129bd4b964863251313ec9",
      "tree": "106d6dbc1cf30d5a28066cbb268bf65cdcdc53bf",
      "parents": [
        "fd21325b2eb252644bc70918ace4f9c6c00c45ef"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed Jun 03 16:44:21 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:26 2009 +0100"
      },
      "message": "[ospfd] Fix OSPF route refcount leak\n\nThis may fix vyatta BUG 3096. The reference count for OSPF route table was\nnever completely freed on deleting all neighbors.\n"
    },
    {
      "commit": "7fc626de5f618133ad2a478d13defa3a110b89ea",
      "tree": "432ff0e4672eabc2ec6b0dcffc22dcc0aee532c8",
      "parents": [
        "66e5cd87194ae6fdd51061a91b4698bc0a652f6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Dec 01 11:10:34 2008 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:10:29 2009 +0100"
      },
      "message": "[cleanup] Make command nodes static\n\nThe cmd_nodes used to configure vty, can mostly be static so\n(basic data hiding 101).\n"
    },
    {
      "commit": "66e5cd87194ae6fdd51061a91b4698bc0a652f6b",
      "tree": "659d31f9a7dfb8d9ad9a51f37ff0853054a45399",
      "parents": [
        "cedd7f2fa6823bca9ddcfb062f97ed83b11a80dd"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Feb 09 10:14:16 2009 -0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:09:03 2009 +0100"
      },
      "message": "[cleanup] functions taking no args should be declared with void args\n\nUse Ansi-C prototypes rather than old K\u0026R method of declaring\nfunction without arguments\n"
    },
    {
      "commit": "393deb9bd663361e6b110d579a8b1d4c22667068",
      "tree": "e93ebf2f57bf92ff7a9cd045764b3cdbb99a07e5",
      "parents": [
        "3453a7122c1d585ad789ed0f63deb90cc5e89fae"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Mon Aug 18 14:13:29 2008 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Jun 12 17:07:49 2009 +0100"
      },
      "message": "[cleanup] Convert XMALLOC/memset to XCALLOC\n\nSimple conversion of XMALLOC/memset to XCALLOC\n"
    },
    {
      "commit": "0be8dfb2a95f41f100982085595b7c7505127018",
      "tree": "add7218b0c518ac0cd276c74fe700b5ed1f26762",
      "parents": [
        "42176e6b01c9ca2b2725952684b2d7792468e861"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Tue Jun 02 18:40:07 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 02 18:45:10 2009 +0100"
      },
      "message": "[snmp] Compiler warning fixes for when \"--enable-snmp\" is configured.\n\nCompiled on 32-bit and 64-bit linux gcc 4.1.2 platforms.\nNo run-time testing on 32-bit and limited run-time testing on 64-bit.\n"
    },
    {
      "commit": "04d23314ddf950fefb3ff18306c7564bf4573a12",
      "tree": "4f95bfb51970b2baf84f67bb12a390b1b6097025",
      "parents": [
        "c5a89ff4e68c49b8841baf3c76290dd78ba383ec"
      ],
      "author": {
        "name": "Francesco Dolcini",
        "email": "fdolcini@sysnetsistemi.it",
        "time": "Tue Jun 02 18:20:09 2009 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 02 18:20:09 2009 +0100"
      },
      "message": "[ospfd] fix vty ospfd no ospf abr-type standard\n\n\"no ospf abr-type standard\" was broken\n"
    },
    {
      "commit": "9eff36b3784acbf72c962770e20ddd3f58f50332",
      "tree": "05ad51204eb352298d8308ba72c0558c5a8450ea",
      "parents": [
        "b8192765a320f389e09bf7261e8902958ad21584"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Apr 10 18:51:24 2009 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "pilot@etcnet.org",
        "time": "Fri Apr 10 18:51:24 2009 +0400"
      },
      "message": "Justified OSPF cost function names and added support for:\n ospf cost \u003c1-65535\u003e A.B.C.D\n no ospf cost \u003c1-65535\u003e\n"
    },
    {
      "commit": "6e687d74f74f36bc9d503e29377e7d42f3427221",
      "tree": "099899b58728fa5fbcfb8282a906d782076bf1ad",
      "parents": [
        "491eddc20ec072b05607d5a90513e3fffc0d85c2"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Sep 24 17:15:48 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 24 17:15:48 2008 +0100"
      },
      "message": "[ospfd] Fix SEGV during startup introduced in recent commit\n\n* ospfd/ospfd.c: (opsf_if_update) Check if ospf_lookup() returns NULL.\n  Fixes bug introduced with recent ospf_network_run changes in\n  a49eb30a, where SEGV will happen if not the \"router ospf\" command has\n  been executed before the first interfaces are reported by zebra.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "491eddc20ec072b05607d5a90513e3fffc0d85c2",
      "tree": "f97e0f8bc9a1416b74485214eb75058c06c961c4",
      "parents": [
        "0e9de56d5e5ee44768102f7955e046f4046ef0b7"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Sep 24 17:03:59 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 24 17:03:59 2008 +0100"
      },
      "message": "[ospfd] Move passive interface check\n\n* ospf_packet.c: Apply passive check and drop for all packages\n  and not just Hellos.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "b3bc68e5a4eecd85138463ae5742c2ccaa1db4bb",
      "tree": "57f3167f01485aee55ca6fb47dd9b87e0b01bd41",
      "parents": [
        "742c64ff34a79ad22982c433edd8d7cf32fd9cdf"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Sep 04 13:52:07 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Sep 04 13:52:07 2008 +0100"
      },
      "message": "[ospfd] Minor enhancements to recent self-host-routes suppression patch\n\n\t* ospf_spf.c: (ospf_spf_process_stubs) Track whether\n\t  parent router vertex is the root, so that the host-route\n\t  suppression logic need only be activated for such vertices.\n\t  Move the actual logic to ospf_intra_add_stub.\n\t* ospf_route.c: (ospf_intra_add_stub) Main test of link moved\n\t  here, notionally more appropriate.\n"
    },
    {
      "commit": "742c64ff34a79ad22982c433edd8d7cf32fd9cdf",
      "tree": "cd8e57bebdc1a930223ed71966c56c787b004820",
      "parents": [
        "06fb2828f183a7099ecbfd12235e1203f8f0459a",
        "910e2704bee6bf78aee858db65f5393be618e683"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Sep 03 09:00:44 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Wed Sep 03 09:00:44 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/delete_ghost_route\u0027\n"
    }
  ],
  "next": "06fb2828f183a7099ecbfd12235e1203f8f0459a"
}
