)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "06fb2828f183a7099ecbfd12235e1203f8f0459a",
      "tree": "b896fa5a5245220a4941c311158e0a93dca2d088",
      "parents": [
        "a49eb30a178547189147c8a35bf9e35f429abb66",
        "53d0deceeb855493aa03c59477f8af7f6bb75140"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Sep 02 21:50:50 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 02 21:50:50 2008 +0100"
      },
      "message": "Merge commit \u002753d0deceeb855493aa03c59477f8af7f6bb75140\u0027\n"
    },
    {
      "commit": "a49eb30a178547189147c8a35bf9e35f429abb66",
      "tree": "5d660dead08f4a98498240fefb86202000210932",
      "parents": [
        "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Sep 02 19:06:31 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Sep 02 21:38:00 2008 +0100"
      },
      "message": "[ospfd] Restructure opsf_if_update() and ospf_network_run()\n\n    Add an struct interface paramenter and adjust the affected\n    code accordingly.\n\n    The old code was a mess looping over all interfaces several times\n    when one interface was added/changed.\n\n    * ospfd/ospfd.h: Add struct interface parameter to ospf_if_update()\n    * ospfd/ospf_zebra.c: Add ifp arg to ospf_if_update() calls.\n      (ospf_interface_address_delete) delete ospf_if_update() call,\n      redundant as function calls ospf_if_free() itself.\n    * ospfd/ospfd.c: (ospf_network_unset) handle deconfiguration here,\n      rather than ospf_if_update.\n      (ospf_network_run_interface) ospf_network_run, for\n      any given interface.\n      (ospf_network_run) move guts to previous, and use it.\n      (ospf_if_update) Adjust to take struct interface as argument, as\n      all callers have a specific ifp in mind.\n      Iterate over ifp\u0027s connected list and call ospf_network_run_interface\n      instead of ospf_network_run, turning this path into O(nm) rather\n      than O(n^2).\n      Adjust all code dealing with opsf_if_update and ospf_network_run to\n      pass the new struct interface * arg.\n\n     (some minor modifications and bug-additions by Paul Jakma).\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6",
      "tree": "c54c1c217a1742549ea1f1067419574aa1366d35",
      "parents": [
        "d6bb5aa52793979616f0bfc5f38a0eb2e5f1c7e4",
        "35f891404a6d2f0d034ca0fb724904db72baf552",
        "fb62a3cef5960885119f9e87c833520ddf2a9b49"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/ospf_neighbour\u0027; commit \u0027remotes/jocke/snmp_crosscompile\u0027\n"
    },
    {
      "commit": "53d0deceeb855493aa03c59477f8af7f6bb75140",
      "tree": "d90d9bffb35916108d9ce155c5c991edfea18395",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Fri May 30 16:04:39 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:52:06 2008 +0200"
      },
      "message": "Set destination for PtP links to OSPF_ALLSPFROUTERS.\n\nUpdate ospf_db_desc_send(), ospf_ls_upd_queue_send() and ospf_ls_req_send()\nto always use OSPF_ALLSPFROUTERS for PtP links.\n\nSee RFC 2328, chap 8.1 for details:\n\n    \"The IP destination address for the packet is selected as\n     follows.  On physical point-to-point networks, the IP\n     destination is always set to the address AllSPFRouters.\"\n\nWithout this, it won\u0027t be possible to establish adjacencies on\nmultiple unnumbered links to the same router.\nChangeLog:\n2008-07-25 Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\n\n\t* ospfd/ospf_packet.c: Set destination for PtP links to\n\t  OSPF_ALLSPFROUTERS.\n"
    },
    {
      "commit": "910e2704bee6bf78aee858db65f5393be618e683",
      "tree": "881c792fa2424d34c485e23b368a57c9c6a6daaa",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Wed Aug 20 14:24:39 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:50:17 2008 +0200"
      },
      "message": "Ignore host routes to self.\n\nPtP links with /32 masks adds host routes to the remote host,\nsee RFC 2328, 12.4.1.1, Option 1.\nMake sure that such routes are ignored\n"
    },
    {
      "commit": "fb62a3cef5960885119f9e87c833520ddf2a9b49",
      "tree": "cf6c5cde38c91ad555021f44793b92fd34de8198",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue May 13 20:03:32 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:48:30 2008 +0200"
      },
      "message": "Make --enable-snmp cross compile and make libcrypto optional with --without-crypto\n\nAutoconfig work by me, the rest was done by\n\"Kirill K. Smirnov\" \u003clich@math.spbu.ru\u003e\n"
    },
    {
      "commit": "35f891404a6d2f0d034ca0fb724904db72baf552",
      "tree": "c88b3a0ed05fa5664e0a731792619b6134230231",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue Jul 01 16:54:07 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:44:18 2008 +0200"
      },
      "message": "Fix SEGV in ip ospf neighbor all\n\nDont use vty-\u003eindex in show_ip_ospf_neighbor_all_cmd(),\nIt is invalid, use ospf_lookup() instead.\n"
    },
    {
      "commit": "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4",
      "tree": "5cc873e6a38a3db9ad5fb4dfe579624ff7693c13",
      "parents": [
        "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Oct 21 18:35:27 2006 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:00:46 2008 +0100"
      },
      "message": "[administrivia] Git should ignore backup files and .loT files\n"
    },
    {
      "commit": "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2",
      "tree": "66bf93340e55bb06b25544ef04afec3749269391",
      "parents": [
        "e5248434c0d287668be956a2bd52399d67b16c39"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 19 14:13:43 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:57:22 2008 +0100"
      },
      "message": "[trivia] Remove ChangeLog files, as this data is now maintained in SCM\n"
    },
    {
      "commit": "30a2231a4881f53deca61ef7a62b225a43dab4c5",
      "tree": "f26dff922a4f85d302fa67bbd9a120108db41c44",
      "parents": [
        "f5612dd382d9c0f4089b08ec164c25a8082d9f89"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 14:05:22 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:59 2008 +0100"
      },
      "message": "[warnings] Fix various SOS warnings\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* */*: Fix various problems flagged by Sun Studio compiler.\n\t  - \u0027\u003cqualifier\u003e \u003cstorage\u003e\u0027 obsolescent in declarations\n\t  - empty statements (\u0027;\u0027 after ALIAS definitions)\n\t  - implicit declarations (e.g printstack in lib/log.c)\n\t  - \"\\%\" in printf string instead of \"%%\"\n\t  - loops that return on the first iteration (legitimately, but\n \t    compiler can\u0027t really know), e.g. bgp_routemap.c\n \t  - internal declarations which mask prototypes.\n"
    },
    {
      "commit": "1423c809cc4ddc2e013ba6264c49a11e5719c6f2",
      "tree": "db0389e7de020bbcb9fd78d45417b0842a6adb0b",
      "parents": [
        "89d9fa301e146193093ff876f96b3612dc390bbb"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 17:59:25 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[lib] mes_lookup string lookup table argument should be marked const\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* lib/log.{c,h}: struct message argument should point to const\n\t* */*.c: adjust to suit,\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "9fd4958a4eef88c536e4a5aeefce302e10ee8ee6",
      "tree": "b014b5fe3a94a6eab059632fea56929b335cbe28",
      "parents": [
        "69954565621127a62c11ec315b175b930230c217"
      ],
      "author": {
        "name": "Daniel Ng",
        "email": "daniel_ng11@lycos.com",
        "time": "Wed Aug 13 20:37:52 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[ospfd] Default route needs to be refreshed after neighbour state change\n\n2008-08-13 Daniel Ng \u003cdaniel_ng11@lycos.com\u003e\n\n\t* ospf_nsm.c: (nsm_change_state) Refresh default route on\n\t  state change - a hack, but it works.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "6a270cd93d02a88709e7292684db47552b630abf",
      "tree": "8783ae29bef1f8e48e6278dcbe4360247316b029",
      "parents": [
        "3e40282fd93553da276b48830db3df819b73c884"
      ],
      "author": {
        "name": "Jingjing Duan",
        "email": "Jingjing.Duan@sun.com",
        "time": "Wed Aug 13 19:09:10 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[ospfd/isisd] Switch to lib/ Fletcher checksum, fixing bug in isisd\n\n2008-08-13 Jingjing Duan \u003cJingjing.Duan@sun.com\u003e\n\n\t* ospfd/: Remove the old checksum implementation and\n\t  use the consolidated version.\n\t* isisd/: ditto, thus fixing isisd checksuming on big-endian.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3c5a0a4f8fe3811affff6d5e123379eedb083571",
      "tree": "79e285e0bd04c6ef0dfcde9cf0ce8fda8abecbe1",
      "parents": [
        "750e814693050bc97391eec618aad9db798ee5e8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Feb 19 17:30:10 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:49:33 2008 +0100"
      },
      "message": "[administrivia] Add .gitignore files, based on .cvsignores.\n"
    },
    {
      "commit": "0d6b2ee249e9efba30da3236c413bf03c7b27ed9",
      "tree": "4d9320f2c34f0c127b58b92f59e2c2afd2d5818f",
      "parents": [
        "768a27ea7ba25257c79689af83ab37945dc1cc3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "message": "[daemons] Sanity check port number arguments before use\n\n2008-05-29 Martin Nagy \u003cmnagy@redhat.com\u003e\n\n\t* */*main.c: Sanity check port numbers before using.\n"
    },
    {
      "commit": "dea04441fb51f74dc25f6ab4bd756b4159d961b6",
      "tree": "95a4578d95f20dd0dc168d07a90ea9cf71d6047f",
      "parents": [
        "d38e8d63fdfc0aefb78d0a51ffdf06d8b47993fd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Feb 26 09:16:09 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Feb 26 09:16:09 2008 +0000"
      },
      "message": "[c++] remove/rename some names in headers that clash with C++ reserved words\n\n2008-01-30 Peter Szilagyi \u003csp615@hszk.bme.hu\u003e\n\n\t* lib/stream.h: Remove named \u0027new\u0027 parameter in prototype\n\t  for c++ header compatibility.\n\t* ospfd/ospf_opaque.h: ditto\n\t* ospfd/ospfd.h: Renamed struct export to _export for c++\n\t  header compatibility.\n\t* ospf6d/ospf6_area.h: ditto\n"
    },
    {
      "commit": "fb31c0fea38c863ddcda56f46c36f065340b9e32",
      "tree": "5ccad0644a6b04eb127c36dc651155dbcf9eb2ac",
      "parents": [
        "f102e75f613af740241dfa7253a2362c7935b9a8"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:03:13 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:03:13 2007 +0000"
      },
      "message": "+ fix missing arg to zlog_warn()\n"
    },
    {
      "commit": "f102e75f613af740241dfa7253a2362c7935b9a8",
      "tree": "800da79542d21e3734c4370b33cbb1f474714b55",
      "parents": [
        "96934e6ac6ec9ff6e67131cc8324741b771d5e0d"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:01:13 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Sep 18 09:01:13 2007 +0000"
      },
      "message": "+ fix minor regression in OSPF sending buffer adjustment logic\n"
    },
    {
      "commit": "b7fe4141123c6fc26fffec68d0db62ecf474c074",
      "tree": "78f2cde951e92198b00dea6ed048d41a499f71fb",
      "parents": [
        "1ba27564f3852083839bfa1f91889cb46c780f2f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "message": "Bug #362 is fixed now.\n"
    },
    {
      "commit": "e95537f0495401c0dd86669d096387e5cdddf8e0",
      "tree": "48d749b6728bc5b3a60bc0b4f617b7f5ac0be90b",
      "parents": [
        "93bdadae74a9b391152f5511dbced6f08fad6d94"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 07 16:22:05 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 07 16:22:05 2007 +0000"
      },
      "message": "[ospfd] Finish explanatory comment started in previous commit..\n\n2007-08-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: (ospf_spf_next) Finish off the explanatory\n\t  comment made in previous commit\n"
    },
    {
      "commit": "7591d8b862439dfae8b4b16d148ce567b6ff8cb7",
      "tree": "b9d24293663be04e4c80bcd78f8d1f5e86c2c3f1",
      "parents": [
        "fc787e873dff0091069742b34fb3631ac529c92a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 18:52:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 18:52:45 2007 +0000"
      },
      "message": "[ospfd] Fix bad SPF calculation on some topologies - incorrect sorting\n\n2007-08-07 Atis Elsts \u003catis@mikrotik.com\u003e\n\n\t* ospf_spf.c: (ospf_spf_next) Sort heap in correct direction\n\t  after vertex cost is changed, thus fixing incorrect SPF\n\t  calculation on certain topologies.\n\t* lib/pqueue.{c,h}: Export trickle_up\n"
    }
  ],
  "next": "fc787e873dff0091069742b34fb3631ac529c92a"
}
