)]}'
{
  "log": [
    {
      "commit": "23cd8fb7133befdb84b3a918f7b2f6147161ac6e",
      "tree": "b8ef335dcbc2051a5017aa50bc4b759882b638d2",
      "parents": [
        "a12afd5e8e57c95505d4d0166af234c7f19e9fe1"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Fri Aug 02 07:27:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Aug 06 12:41:46 2013 +0200"
      },
      "message": "ospfd: protect vs. VU#229804 (malformed Router-LSA)\n\nVU#229804 reports that, by injecting Router LSAs with the Advertising\nRouter ID different from the Link State ID, OSPF implementations can be\ntricked into retaining and using invalid information.\n\nQuagga is not vulnerable to this because it looks up Router LSAs by\n(Router-ID, LS-ID) pair.  The relevant code is in ospf_lsa.c l.3140.\nNote the double \"id\" parameter at the end.\n\nStill, we can provide an improvement here by discarding such malformed\nLSAs and providing a warning to the administrator.  While we cannot\nprevent such malformed LSAs from entering the OSPF domain, we can\ncertainly try to limit their distribution.\n\ncf. http://www.kb.cert.org/vuls/id/229804 for the vulnerability report.\nThis issue is a specification issue in the OSPF protocol that was\ndiscovered by Dr. Gabi Nakibly.\n\nReported-by: CERT Coordination Center \u003ccert@cert.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4c14b7f684510592f2eb46fd84859d8bca57def9",
      "tree": "f42890045f6d1cd37cdd61106b6524e6c476f445",
      "parents": [
        "4de8bf001189d40e086764fd804e59657d2e21e6"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:54 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@diac24.net",
        "time": "Sat Apr 20 06:14:27 2013 +0200"
      },
      "message": "ospfd: fix flooding procedure\n\nAn ospf router should accept a new maxage LSA into its lsdb if it has any\nneighbors in state Exchange or Loading. ospfd would however only account\nfor neighbors on the same interface which does not seem to be a valid\noptimization.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: Joachim Nilsson \u003ctroglobit@gmail.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "58952492d2eedd4b7974274a578a1fa9707125bb",
      "tree": "ef09366f20a103188a07bc9ed753bec723345967",
      "parents": [
        "c095185c26f72bff14238ca1209ef6b2d7a8b935"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Wed Feb 20 10:00:53 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 09 17:06:38 2013 +0200"
      },
      "message": "ospfd: fix LSA initialization for build without opaque LSA\n\nIf configured without opaque LSA support, the old code would incorrectly\nassociate type 5 LSAs with an area.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0798cee34f5c436cd2a4b6e1d9a1ca90eee94292",
      "tree": "1b2293b711a12d743a0cd814235589bc4ce8d84f",
      "parents": [
        "de54b26caca7442af29656282e753b02aac6f093"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:43:42 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:59 2013 -0800"
      },
      "message": "ospfd: compile warning cleanups\n\nA set of patches to clarify some comments as well as cleanup code that was\ncausing warnings.  After these patches, the code can be compiled with\n\n-Wall -Wsign-compare -Wpointer-arith -Wbad-function-cast -Wwrite-strings\n-Wmissing-prototypes -Wmissing-declarations -Wchar-subscripts -Wcast-qual\n-Wextra -Wno-unused-parameter -Wno-missing-field-initializers\n\n(what is current in trunk plus -Wextra -Wno-unused-parameter\n-Wno-missing-field-initializers).\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "f92c57f8ba4f1e856934ec1736be3cad62be4785",
      "tree": "44c11ce2ea55d168218f654baf9cb8a83a4d6cd0",
      "parents": [
        "fbc043a847149499436fe4083b6384bde43fe578"
      ],
      "author": {
        "name": "Andrew Certain",
        "email": "certain@amazon.com",
        "time": "Tue Dec 04 13:29:21 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:50 2013 -0800"
      },
      "message": "ospfd: Update comments to be more clear in packet processing\n\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "faf9875832539f00940904e1424f2e789fef52d4",
      "tree": "ebf2d85a78f96b5d7b2e2a8eab7d3ad07b484af6",
      "parents": [
        "91e6a0e5ca973c7183f638987b67aa370e9b484c"
      ],
      "author": {
        "name": "Ayan Banerjee",
        "email": "ayan@cumulusnetworks.com",
        "time": "Tue Dec 04 10:49:12 2012 -0800"
      },
      "committer": {
        "name": "Scott Feldman",
        "email": "sfeldma@cumulusnetworks.com",
        "time": "Mon Jan 07 09:59:45 2013 -0800"
      },
      "message": "ospf: Reduce MaxAge log level\n\nReduce the log level for the MaxAge LSA reception when such an LSA does\nnot exist in the database.\n\nSigned-off-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "d8a4e42b7d19a87eacc00c825e913907a58f39ee",
      "tree": "2d0777bfbef0e77ca1722fe0e7b2591ef89d4102",
      "parents": [
        "b0145ddb4bf75d2c8853aa3d0bc7c522f4f17531"
      ],
      "author": {
        "name": "JR Rivers",
        "email": "jrrivers@cumulusnetworks.com",
        "time": "Thu Sep 13 17:17:36 2012 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "lib: improve fletcher checksum validation\n\nOVERVIEW\n\nThe checksum used in OSPF (rfc2328) is specified in rc905 annex B.  There is an\nsample implementation in rfc1008 which forms the basis of the quagga\nimplementation.  This algorithm works perfectly when generating a checksum;\nhowever, validation is a bit problematic.\n\nThe following LSA (generated by a non-quagga implementation) is received by\nquagga and marked with an invalid checksum; however, it passes both the rfc905\nand rfc1008 validation checks.\n\nstatic uint8_t lsa_10_121_233_29[] \u003d {\n   0x0e, 0x10, 0x02, 0x03,\n   0x09, 0x00, 0x35, 0x40,\n   0x0a, 0x79, 0xe9, 0x1d,\n   0x80, 0x00, 0x00, 0x03,\n   0x00, 0x8a, 0x00, 0x1c,\n   0xff, 0xff, 0xff, 0xe0,\n   0x00, 0x00, 0x36, 0xb0\n};\n\nLS Type: Summary-LSA (IP network)\n   LS Age: 3600 seconds\n   Do Not Age: False\n   Options: 0x02 (E)\n   Link-State Advertisement Type: Summary-LSA (IP network) (3)\n   Link State ID: 9.0.53.64\n   Advertising Router: 10.121.233.29 (10.121.233.29)\n   LS Sequence Number: 0x80000003\n   LS Checksum: 0x008a\n   Length: 28\n   Netmask: 255.255.255.224\n   Metric: 14000\n\nYou\u0027ll note that one byte of the checksum is 0x00; quagga would calculate the\nchecksum as 0xff8a.\n\nIt can be argued that the sourcing implementation generates an incorrect\nchecksum; however, rfc905 indicates that, for 1\u0027s complement arithmetic, the\nvalue 255 shall be regarded as 0, thus either values are valid.\n\nEXPLANATION\n\nThe quagga ospfd and ospf6d implementations operate by copying the PDU\u0027s\nexisting checksum in a holding variable, calculating the checksum, and comparing\nthe resulting checksum to the original.  As a note, this implementation has the\nside effect of modifying the contents of the PDU.\n\nEvaluation of both rfc905 and rfc1008 shows that checksum validation should\ninvolve calculating the sum over the PDU and checking that both resulting C0 and\nC1 values are zero.  This behavior is enacted in the rfc1008 implementation by\ncalling encodecc with k \u003d 0 (checksum offset); however, this functionality had\nbeen omitted from the quagga implementation.\n\nPATCH\n\nThis patch adds the ability to call the quagga\u0027s fletcher_checksum() with a\nchecksum offset value of 0xffff (aka FLETCHER_CHECKSUM_VALIDATE) which returns\nthe sum over the buffer (a value of 0 indicates a valid checksum).  This is\nsimilar to the mechanism in rfc1008 when called with k \u003d 0.  The patch also\nintroduces ospf_lsa_checksum_valid().\n\nospf6d had it\u0027s own implementation of the fletcher checksum in\nospf6_lsa_checksum(); it\u0027s the same algorithm as in fletcher_checksum().  This\npatch removes the local implementation in favor of the library\u0027s as well as creates\nand uses ospf6_lsa_checksum_valid().\n\nquagga\u0027s ISIS implementation suffers from the same problem; however, I do not\nhave the facilities to validate a fix to ISIS, thus this change has been left to\nthe ISIS maintainers.  The function iso_csum_verify() should be reduced to\nrunning the fletcher checksum over the buffer using an offset of 0.\n\nSigned-off-by: JR Rivers \u003cjrrivers@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Nolan Leake \u003cnolan@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "6f0e3f6e17687eb25b7b77c4fdc8324837d4700f",
      "tree": "8a94d9212060f0f2ee7cbd0079c2687eed7348dc",
      "parents": [
        "08d3d5b398ae81de7659509f159e814d1bbd4375"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "message": "[autoconf] bugs 162,303,178: Fix \u0027present but can not be compiled\u0027 warnings\n\n2007-05-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: sys/conf.h depends on sys/param.h, at least on\n\t  FBSD 6.2.\n\t  (bug #363) Should check for in_pktinfo for IRDP\n\n2006-05-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: General cleanup of header and type checks, introducing\n\t  an internal define, QUAGGA_INCLUDES, to build up a list of\n\t  stuff to include so as to avoid \u0027present but cant be compiled\u0027\n\t  warnings.\n\t  Misc additional checks of things missing according to autoscan.\n\t  Add LIBM, for bgpd\u0027s use of libm, so as to avoid burdening\n\t  LIBS, and all the binaries, with libm linkage.\n\t  Remove the bad practice of using m4 changequote(), just\n\t  quote the []\u0027s in the case statements properly.\n\t  This should fix bugs 162, 303 and 178.\n\t* */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced\n\t  HAVE_* defines. I.e. HAVE_SA_LEN -\u003e HAVE_STRUCT_SOCKADDR_SA_LEN,\n\t* bgpd/Makefile.am: Add LIBM to bgpd\u0027s LDADD, for pow().\n"
    },
    {
      "commit": "7ffa8fa2322fb759cf1f93730cde2cee3d4ad8ee",
      "tree": "2e27d51d171609415026cbc8ce7f2ef7ea4df5e5",
      "parents": [
        "6f58544db526b4dfb09d45f8507926b0ae5fe12b"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 20:07:53 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 22 20:07:53 2006 +0000"
      },
      "message": "[ospfd] Add passive-interface default support\n\n2006-10-22 Yar Tikhiy \u003cyar@comp.chem.msu.su\u003e\n\n\t* (general) Add support for passive-interface default (with\n\t  minor edits by Paul Jakma).\n\t* ospf_interface.h: Add OSPF_IF_PASSIVE_STATUS macro, looking\n\t  at configured value, or the global \u0027default\u0027 value, as\n\t  required.\n\t* ospf_interface.c: (ospf_if_new_hook) Leave passive\n\t  unconfigured per default, allowing global \u0027default\u0027 to\n\t  take effect for unconfigured interfaces.\n\t* ospf_packet.c: (various) use OSPF_IF_PASSIVE_STATUS\n\t* ospf_vty.c: (ospf_passive_interface_default) new function,\n\t  unset passive from all interfaces if default is enabled, as\n\t  the per-iface settings become redundant.\n\t  (ospf_passive_interface_update) new func, update passive\n\t  setting taking global default into account.\n\t  ({no,}ospf_passive_interface_addr_cmd) Add support for\n\t  \u0027default\u0027 variant of command.\n\t  (show_ip_ospf_interface_sub) Update to take global\n\t  default into account when printing passive status.\n\t  (ospf_config_write) ditto.\n\t* ospfd.c: (ospf_new) set global passive-interface default.\n\t* ospfd.h: (struct ospf) Add field for global\n          passive-interface.\n"
    },
    {
      "commit": "08c8367197cb847eb88942e5d7273cf3352d967f",
      "tree": "ccc761ebe1baea6acaf290688a44edf5133586bb",
      "parents": [
        "301e4fb0cfab692c9ec9cbd5fdcb50058547d7cf"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Sep 25 13:26:14 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Mon Sep 25 13:26:14 2006 +0000"
      },
      "message": "[ospfd] Improve some warning messages.\n\n2006-09-25 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_packet_dup, ospf_make_md5_digest)\n\t  Fix zlog_warn messages to eliminate compiler warnings.\n\t  (ospf_hello) Improve warning messages to show why we\n\t  are complaining.\n"
    },
    {
      "commit": "b5aeb4410ae3722a5f331850acbc84c39e3fcd9f",
      "tree": "7af84f1ffe17a5b1444f57f0cb5f0f34197f8837",
      "parents": [
        "c15deb1b7428a2baedfb615b1a41fe28d48c598c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Aug 30 18:47:37 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Aug 30 18:47:37 2006 +0000"
      },
      "message": "[ospfd] Fix assertion in DB-exchange fix, hit by ogier-db-ex-opt commit\n\n2006-08-28 Andy Gay \u003candy@andynet.net\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Assert added with More-bit\n\t  fixes does not hold up with addition of Ogier DB-Exchange\n\t  optimisation, which can empty the db-summary list in between\n\t  sent DD packets. Remove assert, update More-bit always when\n\t  in Exchange.\n"
    },
    {
      "commit": "2518efd15b75687d4791a5eb4b0d7febc36cffbc",
      "tree": "075b833f292ba3e64117a9ffb440578c70be5a2a",
      "parents": [
        "db9c0df934e62835bc09604a7ae7932693b4254a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:49:29 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:49:29 2006 +0000"
      },
      "message": "[ospfd] Bug #134, ospfd should be more robust to backward time change\n\n2006-08-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Bug #134. Be more robust to backward time changes,\n\t  use the newly added libzebra time functions.\n\t  In most cases: recent_time -\u003e recent_relative_time()\n\t  gettimeofday -\u003e quagga_gettime (QUAGGA_CLK_MONOTONIC, ..)\n\t  time -\u003e quagga_time.\n\t  (ospf_make_md5_digest) time() call deliberately not changed.\n\t  (ospf_external_lsa_refresh) remove useless gettimeofday, LSA\n\t  tv_orig time was already set in ospf_lsa_new, called via\n\t  ospf_external_lsa_new.\n"
    },
    {
      "commit": "f0894cf8c323a25053e1f5e82be3ea5d88c2aacb",
      "tree": "377f9a4910111973309533ea040680e0c32d4a5f",
      "parents": [
        "8dd24ee6d7302ccd9515123d4364122ade277e02"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:40:04 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:40:04 2006 +0000"
      },
      "message": "[ospfd] draft-ogier-ospf-dbex-opt DB-exchange optimisation\n\n2006-08-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Implement\n\t  draft-ogier-ospf-dbex-opt DB-exchange optimisation.\n"
    },
    {
      "commit": "8dd24ee6d7302ccd9515123d4364122ade277e02",
      "tree": "9945784ca770b2853a802895ac403a52f2505c4d",
      "parents": [
        "ba122e779ddd1ef09e61ac2003ca20cf7ee8c611"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:29:30 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 27 06:29:30 2006 +0000"
      },
      "message": "[ospfd] Raise ExchangeDone earlier, avoid often needless round of DD packets\n\n2006-08-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_make_db_desc) Unset the DD More bit\n\t  after constructing the packet, if appropriate.\n\t  (ospf_db_desc_proc) Speed up Exchange, slave should raise\n\t  ExchangeDone earlier, as RFC mandates, by forming its reply\n\t  before deciding whether both sides are done, avoids a\n\t  needless round of empty DD packet exchanges at the end of\n\t  Exchange, hence speeding up ExchangeDone.\n\t  (ospf_db_desc) use UNSET_FLAG macro.\n"
    },
    {
      "commit": "1fe6ed38cd0136c514aabae01389653beab27fb9",
      "tree": "21f10bc3f9c5afffe9f28e5dbf4e6198cfafba5b",
      "parents": [
        "3fed4160cd23f1767d8980e8cba10bc3933947d5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jul 26 09:37:26 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jul 26 09:37:26 2006 +0000"
      },
      "message": "[ospfd] Allow ospf_lsa_unlock to NULL out callers\u0027 LSA pointers upon free\n\n2006-07-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.{c,h}: (ospf_lsa_unlock) Change to take a double pointer\n\t  to the LSA to be \u0027unlocked\u0027, so that, if the LSA is freed, the\n\t  callers pointer to the LSA can be NULLed out, allowing any further\n\t  use of that pointer to provoke a crash sooner rather than later.\n\t* ospf_*.c: (general) Adjust callers of ospf_lsa_unlock to match\n\t  previous. Try annotate \u0027locking\u0027 somewhat to show which \u0027locks\u0027\n\t  are protecting what LSA reference, if not obvious.\n\t* ospf_opaque.c: (ospf_opaque_lsa_install) Trivial: remove useless\n\t  goto, replace with return.\n\t* ospf_packet.c: (ospf_make_ls_ack) Trivial: merge two list loops,\n\t  the dual-loop predated the delete-safe list-loop macro.\n"
    },
    {
      "commit": "13cd3dc1e8281cc6fdc576fb0b62e71a9e170cae",
      "tree": "2268ce870f36a9ce84dcb281917514bbdf920b44",
      "parents": [
        "9d0a3260b2d1b57b7edfd3f72885d861883d4621"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jul 11 01:50:30 2006 +0000"
      },
      "message": "[ospfd] Improve Hello NetworkMask mismatch warning to give more info\n\n2006-07-10 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_hello) Improve NetworkMask mismatch warning\n\t  message to include interface name and conflicting prefix lengths.\n"
    },
    {
      "commit": "429ac78cc64e0e29bab7cbc00ee991abcdec3f81",
      "tree": "829302b483390d1484959e4f5b01da2e89d002ba",
      "parents": [
        "74ecdc9e74eb96829e342a03531ba6647ce6bb3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:40:49 2006 +0000"
      },
      "message": "[ospfd] Fix multicast membership drop bug\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Reported by Milan Koci\n\t* ospf_interface.h: (struct ospf_if_info) Add reference counts\n\t  for multicast group memberships. Add various macros to help\n\t  manipulate/check membership state.\n\t* ospf_interface.c: (ospf_if_set_multicast) Maintain the\n\t  ospf_if_info reference counts, and only actually drop\n\t  memberships if it hits 0, to avoid losing membership when\n\t  OSPF is disabled on an interface with multiple active OSPF\n\t  interfaces.\n\t* ospf_packet.c: (ospf_{hello,read}) Use the new macros to\n\t  check/set\n\t  multicast membership.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) ditto.\n"
    },
    {
      "commit": "88871b1d1ea8150ddf3d8f66fe77323770ba0f9f",
      "tree": "8f25f719d120d12a9f333000064ca356563b4387",
      "parents": [
        "1602a71d7a64395254e175c5c417fa593647b995"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 11:41:19 2006 +0000"
      },
      "message": "[ospfd] suppres mostly uninteresting debug message unless debug is set\n\n2006-05-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_read) Debug message about packets\n\t  received on unenabled interfaces should be conditional on\n\t  debug being set.\n"
    },
    {
      "commit": "c6371718f39dedd2a03010a9dc26a18d96abbe7f",
      "tree": "d2b17403d11b3d162275bfa28711f5ee3daa6a94",
      "parents": [
        "d211086aefd45e0b7c113a43ed5eb620626b8681"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:49:53 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:49:53 2006 +0000"
      },
      "message": "[ospfd/zserv] adjust to new format\n\n2006-01-17 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_verify_header) print out the types\n\t  involved if there\u0027s a mismatch.\n\t* ospf_zebra.c: (ospf_zebra_add) Adjust to new zserv format.\n"
    },
    {
      "commit": "818e56cf2723843377d2881a6b81b8adc0fe9160",
      "tree": "7abd2058a41c3e2b24f739dfd05ec3edfe5c265a",
      "parents": [
        "37c38304e481037ed075f79f78a3d6f78038f907"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 23:27:05 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 23:27:05 2006 +0000"
      },
      "message": "[ospfd] fix undefined effect expression\n\n2006-01-10 Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_packet.c: (ospf_make_md5_digest) fix odd, if not\n\t  undefined effect, assignment of an increment expression.\n"
    },
    {
      "commit": "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1",
      "tree": "3b21783cff3ac3278a8fd39093dcdd05f443b891",
      "parents": [
        "9c4f1c6f10d4770933c0558528a0e59557b96230"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: Change level of some warnings to\n\t  informational.\n"
    },
    {
      "commit": "484315fd274b3782f72abc95c9796c604e53bcc9",
      "tree": "2b1753169c541429e0d360439a55c4905d71f70d",
      "parents": [
        "34204aac424f8c29317d863d64f1c3bb4d241a50"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (apiserver_sync_callback) stray semi-colon\n\t* ospf_packet.c: include checksum.h, remove the in_cksum extern\n\t* prototypes.\n\t* ospf_te.h: Add braces, quell warning.\n"
    },
    {
      "commit": "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737",
      "tree": "1d2a79a2ec4004f16b1ba3f2f2923ed8796cde83",
      "parents": [
        "c188c37caaf589a17b22e9889e63ec96f2f57106"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF millisecond resolution timer with adaptive,\n\t  linear back-off holdtime. Prettification of ospf_timer_dump.\n\t* ospf_dump.c: (ospf_timeval_dump) new function. The guts of\n\t  ospf_timer_dump, but made to be more dynamic in printing out\n\t  the relative timeval, sliding the precision printed out\n\t  according to the value.\n\t  (ospf_timer_dump) guts moved to ospf_timeval_dump.\n\t* ospf_dump.h: export ospf_timeval_dump.\n\t* ospf_flood.c: (ospf_flood) remove gettimeofday, use\n\t  the libzebra exported recent_time instead, as it\u0027s not\n\t  terribly critical to have time exactly right - the dropped\n\t  LSA will be retransmited to us if we don\u0027t ACK it.\n\t* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we\u0027re\n\t  not transmitting, just putting LSA back on update transmit list.\n\t* ospfd.h: delay and holdtimes should be unsigned.\n\t  Add spf_max_holdtime and spf_hold_multiplier.\n\t  Update default defines for delay and hold time to be in msec.\n\t  (struct ospf) change the SPF timestamp to a struct timeval.\n\t  Remove ospf_timers_spf_(un)?set.\n\t* ospfd.c: (ospf_timers_spf_{set,unset}) removed.\n\t  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier\n\t* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval\n\t  now, update with gettimeofday.\n\t  (ospf_spf_calculate_schedule) Change SPF timers to millisecond\n\t  resolution.\n\t  Make the holdtime be adaptive, with a linear increase in\n\t  holdtime ever consecutive SPF run which occurs within holdtime\n\t  of previous SPF, bounded by spf_max_holdtime.\n\t* ospf_vty.c: Update spf timers commands.\n\t  (ospf_timers_spf_set) trivial helper.\n\t  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,\n\t  initial hold and max hold times with millisecond resolution.\n\t  (ospf_timers_spf_cmd) Deprecated. Accept the old values,\n\t  convert to msec, truncate to new limits.\n\t  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.\n\t  (no_ospf_timers_spf_cmd) deprecated form, same as previous.\n\t  (show_ip_ospf_cmd) Display SPF parameters and times.\n\t  (show_ip_ospf_neighbour_header) Centralise the \u0027sh ip os ne\u0027\n\t  header.\n\t  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of\n\t  the multiple spaces which were making the lines even longer.\n\t  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header\n\t  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field\n\t  widths for NBMA neighbours.\n\t  (show_ip_ospf_neighbor_int) Use header function.\n\t  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,\n\t  local array - safer.\n\t  (show_ip_ospf_neighbor_detail_sub) ditto\n\t  (ospf_vty_init) install the new SPF throttle timer commands.\n"
    },
    {
      "commit": "f9ad937f537df92bf3119686eee97db7b7176674",
      "tree": "8c203f4bffabbb2fd27ffeafd2e87e5fd704a0e2",
      "parents": [
        "24065a3d4a61a136a17996a48df02b0b180bc6f0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) OSPF fast, sub-second hello and 1s dead-interval\n\t  support. A warning fix. Millisec support for ospf_timer_dump.\n\t  Change auto-cost ref-bandwidth to add a comment to write out\n\t  of config, rather than printing annoying messages to vty on\n\t  startup.\n\t* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.\n\t  Callers typically specify a length of 9, so most see\n\t  millisecs unless they specify the additional length.\n\t* ospf_interface.h: (struct ospf_interface) new interface param,\n\t  fast_hello.\n\t* ospf_interface.c: (ospf_if_table_lookup) add brackets,\n\t  gcc warning fix.\n\t  (ospf_new_if_params) Initialise fast_hello param.\n\t  (ospf_free_if_params) Check whether fast_hello is configured.\n\t  (ospf_if_new_hook) set fast_hello to default.\n\t* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to\n\t  prevent funny side-effects from its if statement when this\n\t  macro is used conditionally by other macros.\n\t  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.\n\t  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according\n\t  to whether fast_hello is set.\n\t* ospf_ism.c: Update all setting of the hello timer to use\n\t  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The\n\t  former is used when hello is to be sent immediately.\n\t* ospf_nsm.c: ditto\n\t* ospf_packet.c: (ospf_hello) hello-interval is not checked\n\t  for mismatch if fast_hello is set.\n\t  (ospf_read) Annoying nit, fix \"no ospf_interface\" to be debug\n\t  rather than a warning, as it can be perfectly normal to\n\t  receive packets when logical subnets are used.\n\t  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are\n\t  configured.\n\t* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying\n\t  nit, don\u0027t vty_out if this command is given, it gets tired\n\t  quick.\n\t  (show_ip_ospf_interface_sub) Print the hello-interval\n\t  according to whether fast-hello is set or not.\n\t  Print the extra 5 millisec characters from (ospf_timer_dump)\n\t  if fast-hello is configured.\n\t  (ospf_vty_dead_interval_set) new function, common to all\n\t  forms of dead-interval command, to set dead-interval and\n\t  fast-hello correctly. If a dead-interval is given, unset\n\t  fast-hello, else if a hello-multiplier is set, set\n          dead-interval to 1 and fast-hello to given multiplier.\n\t  (ip_ospf_dead_interval_addr_cmd) use\n\t  ospf_vty_dead_interval_set().\n\t  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.\n\t  (no_ip_ospf_dead_interval) Unset fast-hello.\n\t  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval\n\t  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not\n\t  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.\n\t  (config_write_interface) Write out fast-hello.\n\t  (ospf_config_write) Write a comment about\n\t  \"auto-cost reference-bandwidth\" having to be equal on all\n\t  routers. Hopefully just as noticeable as old practice of\n\t  writing to vty, but less annoying.\n\t  (ospf_vty_if_init) install the two new dead-interval\n\t  commands.\n\t* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL\n\t  and OSPF_FAST_HELLO_DEFAULT.\n"
    },
    {
      "commit": "3623814abc4df8435d2fc50697c6d7fc66f21088",
      "tree": "520bef46117e4c81956d4c1aeb23afcc339db832",
      "parents": [
        "d751f00299e0cd9be8f0e702288efe48ac1ddbca"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_api.c: sign warnings.\n\t* ospf_apiserver.c: sign warning and convert all the struct\n\t  in_addr initialisations so as not to make assumptions about\n\t  how this struct is organised, initialise the s_addr member\n\t  explicitely.\n\t* ospf_packet.c: Add const qualifier to auth_key.\n"
    },
    {
      "commit": "ba682537715c42ab3976790baea5cda86c5b1589",
      "tree": "791c998f0857bc4a53761e571427a6acdd11f4ae",
      "parents": [
        "fbf5d033041e406ecefd27c2deebf5a4953d1155"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:52:57 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:52:57 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * ospfd/ospf_vty.c: forece default route LSA to be re_issued whenever\n      cost is changed ( [no] ip ospf area XXX default-cost YYY)\n      Support ignore-mtu option\n    * ospfd/ospfd.h: define OSPF_MTU_IGNORE_DEFAULT\n    * ospfd/ospf_packet.c: support ignore-mtu option\n    * ospfd/ospf_interface.h: field added for skipping MTU check\n    * ospfd/ospf_interface.c: fix memory leak in ospf_crypt_key_delete()\n      Set mtu_ignore field to default value\n    * ospfd/ospf_abr.[ch]: export ospf_abr_announce_network_to_area()\n    * ospfd/ospf_ism.h: add MACRO to convert internal ISM status into SNMP\n      correct values\n    * ospfd/ospf_snmp.c: add sanity check on LSA type in lsdb_lookup_next()\n      convert OSPFIFSTATE internal status into SNMP values\n"
    },
    {
      "commit": "c1a03d4774f8ecc30a21267469d48cb2276de48c",
      "tree": "1bf9309bc99e316a5633d18f7724330d8d6fa836",
      "parents": [
        "aa2e32be264710ef208516dfe1661b8148c3eede"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 15:47:44 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 15:47:44 2005 +0000"
      },
      "message": "2005-09-28 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/md5-gnu.h: removed\n    * lib/md5.h: replaces md5-gnu.h\n    * lib/Makefile.am: use correct md5.h\n    * lib/md5.c: import from WIDE\n    * ospfd/ospf_packet.c: use new md5 API\n    * ripd/ripd.c: use new md5 API\n"
    },
    {
      "commit": "69310a679aef2b532f6851298b453eb7ca4d3534",
      "tree": "1c6a2f3520b0253ae7db42c776e69507c53192ef",
      "parents": [
        "d4e47287efd60f77b473f8d5677e4dac08c192b0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 11 18:09:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 11 18:09:59 2005 +0000"
      },
      "message": "2005-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix memory leaks in opaque AS-scope LSAs, reported and\n\t  with much debugging done by by scott collins \u003cscollins@agile.tv\u003e.\n\t  (possible backport candidate?)\n\t* ospf_lsa.c: (ospf_discard_from_db) dont call\n\t  ospf_ase_unregister_external_lsa for opaque-lsa\u0027s, opaques are\n\t  never registered with ase in the first place.\n\t* ospf_packet.c: (general) Disabuse opaque related code of its\n          tendency to try gather up things into temporary lists.\n          (ospf_ls_upd) remove the temporary lists opaque uses, call\n          opaque functions inline, just like all other types.\n          (ospf_ls_ack) ditto.\n          (ospf_recv_packet) fixup sign warning.\n        * ospf_opaque.c: (general) fix the unneeded use of lists, and\n          untwist some of the logic.\n          (ospf_opaque_self_originated_lsa_received) take a single LSA\n          as argument, not a list of them. Remove the list loop. Logic\n          otherwise unchanged.\n          (ospf_opaque_ls_ack_received) Mostly ditto. But untwist the logic,\n          move the actions up into the switch block, remove the goto\u0027s and\n          sanitise the logic near the end a bit.\n        * ospf_opaque.h: Adjust definitions of aforementioned functions\n          in ospf_opaque.c to match.\n"
    },
    {
      "commit": "4dadc291e56195886fd047690ded9686f4e013fa",
      "tree": "ea7c0690912d2b7d0c487f6855960e768fff1b6e",
      "parents": [
        "69e10adaf28d4e116c38db2648786557fe131828"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) extern and static qualifiers added.\n          unspecified arguments in definitions fixed, typically they should\n          be \u0027void\u0027.\n          function casts added for callbacks.\n          Guards added to headers which lacked them.\n          Proper headers included rather than relying on incomplete\n          definitions.\n          gcc noreturn function attribute where appropriate.\n        * ospf_opaque.c: remove the private definition of ospf_lsa\u0027s\n          ospf_lsa_refresh_delay.\n        * ospf_lsa.h: export ospf_lsa_refresh_delay\n        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const,\n          correct thing to do - removes need for the casts later.\n        * ospf_vty.c: Use vty.h\u0027s VTY_GET_INTEGER rather than ospf_vty\u0027s\n          home-brewed versions, shuts up several warnings.\n        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and\n          VTY_GET_IPV4_PREFIX moved to lib/vty.h.\n        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky\n          overloading of the THREAD_ARG pointer should at least use\n          uintptr_t.\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "5dcbdf82efdf65313a04ea45f2c8f7307c7ab671",
      "tree": "d00d264009efcc9596b673b0e30574394c460a7a",
      "parents": [
        "fd651fa6d5139501af57471109ec15bb688e4bd4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:13:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:13:49 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) Enhance error message to\n\t  show MTU.  Also make function static.\n\t  (ospf_write) Enhance error message to show interface name and MTU.\n\t  Also make function static.\n"
    },
    {
      "commit": "5c33349b3efff36a6acd36c6600b61e7cc2dbffc",
      "tree": "ec55763c7a1401489464bacde9115b06b3b0b467",
      "parents": [
        "9fc7ebf10b7bb638ddf6d1b4b2d562dd417866fc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "message": "2005-02-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.h: Add new field struct stream *ibuf to struct ospf.\n\t* ospfd.c: (ospf_new) Check return code from ospf_sock_init.\n\t  Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).\n\t  (ospf_finish) Call stream_free(ospf-\u003eibuf.\n\t* ospf_packet.c: (ospf_read) Call stream_reset(ospf-\u003eibuf) and then\n\t  pass it to ospf_recv_packet for use in receiving the packet\n\t  (instead of allocating a new stream for each packet received).\n\t  Eliminate all calls to stream_free(ibuf).\n\t  (ospf_recv_packet) The struct stream *ibuf is now passed in as\n\t  an argument.  No need to use recvfrom to peek at the packet\n\t  header (to see how big it is), just use ospf-\u003eibuf which is\n\t  always large enough (this eliminates a system call to recvfrom).\n\t  Therefore, no need to allocate a stream just for this packet,\n\t  and no need to free it when done.\n"
    },
    {
      "commit": "fa81b713e785d4884d5f45f3acd21dc460110862",
      "tree": "35b57c41b359f6d0db1c7491b1928a963ccb6730",
      "parents": [
        "109ac96f0296fd66d5a1d37def44db3cef7ca0fb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:19:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:19:20 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_stream_copy) remove\n\t  (ospf_packet_dup) use stream_copy instead of ospf_stream_copy\n"
    },
    {
      "commit": "038163fa87d5b41503c721bb097faea6b25661c9",
      "tree": "6fac5c09747630ae88ba88c3b925d21b24cbcb39",
      "parents": [
        "52e66296f236cdda751e4206ad3d39c56e53f0fd"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 19:55:59 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 19:55:59 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) If there is somehow a runt\n\t  packet in the queue, it must be discarded.  Improve warning messages.\n\t  Fix scope to static.\n\t  (ospf_read) Fix bug: should reset the read thread in all cases\n\t  to make sure we continue to get incoming messages.\n"
    },
    {
      "commit": "658b03a6bbb88357d841a99908d729e05e3b98c2",
      "tree": "1ac1754274dfa07965c57f266de564e6522799a4",
      "parents": [
        "1e19315262b1eb1228af31f43aee7c9c3e9eefc6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 15 10:10:55 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 15 10:10:55 2005 +0000"
      },
      "message": "2005-02-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) Fix silly error wrt allocating\n\t  ibuf. Thanks Andrew.\n"
    },
    {
      "commit": "bfdc44af118e235e6979be42d4e4f2c1353f7bf0",
      "tree": "616da373ee6520cf47a7a278194730fec340cfef",
      "parents": [
        "050c013ac35337d86b03f140fb17d2e8e33a8baa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:48:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:48:42 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.\n\n2005-02-11 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_lsdb.c: Fix sum of checksums calculation.\n\n2005-02-09 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the\n\t  error message.\n\n2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Reduce structure padding by putting new u_char\n\t  field multicast_memberships in a better spot (grouped with\n\t  other u_char fields type and state).\n\n2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Improve passive_interface comment.  Add new\n\t  multicast_memberships bitmask to struct ospf_interface to track\n\t  active multicast subscriptions.  Declare new function\n\t  ospf_if_set_multicast.\n\t* ospf_interface.c: (ospf_if_set_multicast) New function to configure\n\t  multicast memberships properly based on the current\n\t  multicast_memberships status and the current values of the\n\t  ospf_interface state, type, and passive_interface status.\n\t  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is\n\t  now handled by ism_change_state\u0027s call to ospf_if_set_multicast).\n\t  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now\n\t  handled by ism_change_state).\n\t* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave\n\t  the DRouters multicast group (now handled by ism_change_state\u0027s call\n\t  to ospf_if_set_multicast).\n\t  (ism_change_state) Add call to ospf_if_set_multicast to change\n\t  multicast memberships as necessary to reflect the new interface state.\n\t* ospf_packet.c: (ospf_hello) When a Hello packet is received on a\n\t  passive interface: 1. Increase the severity of the error message\n\t  from LOG_INFO to LOG_WARNING; 2. Add more information to the error\n\t  message (packet destination address and interface address);\n\t  and 3. If the packet was sent to ospf-all-routers, then try\n\t  to fix the multicast group memberships.\n\t  (ospf_read) When a packet is received on an interface whose state\n\t  is ISM_Down, enhance the warning message to show the packet\n\t  destination address, and try to update/fix the multicast group\n\t  memberships if the packet was sent to a multicast address.\n\t  When a packet is received for ospf-designated-routers, but the\n\t  current interface state is not DR or BDR, then increase the\n\t  severity level of the error message from LOG_INFO to LOG_WARNING,\n\t  and try to fix the multicast group memberships.\n\t* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from active to passive.\n\t  (no_ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from passive to active.\n\t  (show_ip_ospf_interface_sub) Show multicast group memberships.\n\n2005-02-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.\n\n2005-02-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,\n\t  not for event ISM_InterfaceDown.  And improve the message by\n\t  adding the interface flags.\n\n2005-01-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_network.c: (ospf_sock_init) Save errno before calling\n\t  ospfd_privs.change.\n\n2005-01-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_packet_add) If oi-\u003eobuf is NULL, print\n\tan error message and return.\n\t(ospf_read) If the interface state is ISM_InterfaceDown, issue\n\ta warning message and ignore the packet.\n\n2005-01-10  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.h: Remove commented out definition of\n\tOSPF_MAX_PACKET; neither it or the uncommented one are used any more.\n\n\t* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication\n\twhen deciding if an update will fit.\n\t(ospf_packet_authspace): Factor out calculation of size required\n\tfor authentication.\n\t(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.\n\tDon\u0027t confuse readers that there is a macro.\n\n2004-12-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_network.c: Improve all setsockopt error messages to give detailed\n\t  information on the arguments.\n\n2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce severity of \"Negotiation done\"\n\t  messages from LOG_WARNING to LOG_INFO, since this seems to be\n\t  normal.\n\n2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Always look up the interface if\n\t  ospf_recv_packet returns NULL ifp, since some platforms such\n\t  as Solaris 8 appear to support ifindex retrieval but don\u0027t.\n\n2004-12-22 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_dump.c: Show debug configuration in vtysh.\n\t* ospf_vty.c: Fix \"show ip ospf\" output. Router can\u0027t be elected in\n\t  any case if it\u0027s configured as \"translate-never\".\n\t* ospf_lsdb.[ch]: New function to calculate sum of checksums.\n\t* ospf_vty.c: Bugfix to show really number of AS external LSAs, not\n\t  number of all LSAs with AS scope, this includes opaque as LSAs as\n\t  well, show this number separately. Show numbers and sums of\n\t  checksums for each type of LSAs.\n\t* ospf_lsa.c: Calculate checksum before putting LSA into database.\n\n2004-12-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Declare new function ospf_default_iftype.\n\t* ospf_interface.c: (ospf_default_iftype) New function to centralize\n\t  this logic in one place.\n\t* ospf_zebra.c: (ospf_interface_add) Use new function\n\t  ospf_default_iftype.\n\t* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic\n\t  by using new function ospf_default_iftype.\n\n2004-12-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Should be static, not global.\n\t  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning\n\t  messages to include identifying information (e.g. router id).\n\t* ospf_nsm.c: (nsm_change_state) Improve info message to include\n\t  router id and state names.\n\n2004-12-09  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_apiserver.c (ospf_apiserver_term): Obtain struct\n\tospf_apiserver * from listnode.  Remove unused variables.  Follows\n\tsuggestion from Jay Fenlason.\n\n2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n\n2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: (main) The 2nd argument to openzlog has been removed.\n\n2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message\n\t  from LOG_NOTICE to LOG_DEBUG.\n\n2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Issue a startup announcement using zlog_notice.\n\n2004-11-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning\n\t  message and in comment.\n\t  (ospf_db_desc) Warning message that a packet is being discarded\n\t  should give the router id of the packet source.  Fix spelling\n\t  of packet in two warning messages.\n\t  (ospf_ls_req) Warning message that a link state request is being\n\t  discarded should give the router id of the neighbor that sent it.\n\n2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: Remove #include \"debug.h\" (was not being used, and\n\t  lib/debug.h has now been deleted).\n\n2004-11-25 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c: Make group to run as configurable.\n\n2004-11-15  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present\n\tand works (lib/zebra.h provides if OS doesn\u0027t).\n\n2004-11-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_{apiserver,te}.c: ospf_lsa_free\u0027s should be ospf_lsa_unlock.\n\n2004-11-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_ia.c: (process_summary_lsa) Only an ABR has any reason to\n          ignore stub area summary default. Even so it seems a strange\n          check, add a comment to that effect.\n\n2004-11-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd.c: (ospf_network_match_iface) revert to previous network\n          statement match behaviour.\n\n2004-11-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points\n\t  to it. Add convenience pointer to msg-\u003emsg_iov[1], and use this,\n\t  fixing the unfortunate borkenness introduced in moving of this code\n\t  to a function.\n\t  (ospf_write) remove iovp and fix up call to previous.\n\t  (ospf_ls_upd_packet_new) cast size to long int - unfortunately\n          glibc\u0027s size_t format modifier is not portable.\n\n2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) Add debug output\n\t  (ospf_write) set type early, so we can pass it to\n\t  ospf_write_frags.\n\t  (ospf_ls_upd_packet_new) print size in debug output when too large\n\t  packet is encountered.\n\t* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of\n\t  THREAD_ARG to store an integer, but it should at least use same\n          same type to retrieve the value. Assert value is sane.\n\n2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()\n          function.\n        * ospf_packet.c: (ospf_read) manually look up ifindex\n          if system could not have returned one, eg openbsd, thanks to Rivo\n\t  Nurges for highlighting problem and fix.\n          Change setsockopt_pktinfo to setsockopt_ifindex.\n\n2004-10-19 Andrew J. Schorr \u003caschorr@telemetry-investments.com\u003e\n\n\t* ospf_snmp.c: (ospf_snmp_if_update) Fix logic to handle PtP links\n\t  with dedicated subnets properly.\n\t* ospf_lsa.c: (lsa_link_ptop_set) ditto.\n\t* ospfd.c: (ospf_network_match_iface) ditto.\n\t  (ospf_network_run) ditto.\n\t* ospf_interface.c: (ospf_if_is_configured) ditto.\n\t  (ospf_if_lookup_by_prefix) ditto.\n\t  (ospf_if_lookup_recv_if) ditto.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Display the peer or\n\t  broadcast address if present.\n\n2004-10-13 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c: Unbreak compilation with ospfapi disabled.\n\t* ospf_snmp.c: Remove defaults used to initialize smux connection to\n\t  snmpd. Connection is initialized only if smux peer is configured.\n\n2004-10-12 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c, ospf_opaque.c: Unbreak ospfclient compilation - move\n\t  static variable from ospf_main.c into ospf_opaque.c.\n\n2004-10-11 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c, ospf_opaque.c: Disable ospfapi init by default. New\n\t  command line switch to enable it.\n\n2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order\n\t  remove ntohs that should have dissappeared. Take struct ip\n\t  as argument, caller has to know there\u0027s an IP header at start of\n\t  stream anyway.\n\t* ospf_dump.h: update declaration of ospf_ip_header_dump.\n\t* ospf_packet.c: (ospf_write) correct call to\n\t  sockopt_iphdrincl_swab_htosys which was munging the header.\n\t  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.\n\t  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as\n\t  we have it.\n\t* (global) Const char update and signed/unsigned fixes.\n\t* (various headers) size defines should be unsigned.\n\t* ospf_interface.h: remove duplicated defines, include the\n\t  authoritative header - though, these defines should probably\n          be moved to a dedicated header, or ospfd.h.\n\t* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.\n\t* ospf_packet.c: (ospf_write) cast result of shift to unsigned.\n\n2004-10-08 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* *.[c|h]: Fix compiler warnings: make some strings const, signed -\u003e\n\t  unsigned, remove unused variables etc.\n\n2004-10-07  Greg Troxel  \u003cgdt@claude.ir.bbn.com\u003e\n\n\t* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don\u0027t\n\tuse of variable names \u0027node\u0027 and \u0027nextnode\u0027 to avoid possible\n\tconflict with list macros.  Move variable declaration inside for\n\tloop after a statement to top of function.\n\n2004-10-07 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_snmp.c: Missed list typedef update\n\t* ospf_dump.c: Include sockopt.h for header swab functions.\n\n2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: replace ospf_swap_iph_to... with\n          sockopt_iphdrincl_swab_...\n\n2004-10-03 James R. Leu \u003cjleu at mindspring.com\u003e\n\n\t* ospf_zebra.c: Read router id related messages from zebra daemon.\n\t  Schedule router-id update thread if it\u0027s changed.\n\t* ospfd.c: Remove own router-id selection function. Use router id from\n\t  zebra daemon if it isn\u0027t manually overriden in configuration.\n\n2004-09-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER\n\t  Apply to offset too. Print ip_cksum, lets not worry about\n\t  possible 2.0.37 compile problems.\n\t* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use\n\t  HAVE_IP_HDRINCL_BSD_ORDER.\n\t  (ospf_recv_packet) ditto.\n\t  (ospf_write) Fixup iov argument to ospf_write_frags.\n          (struct msghdr).msg_name is caddr_t on most platforms.\n\t  (ospf_recv_packet) ditto. And msg_flags is not always there\n          memset struct then set fields we care about rather than\n          initialise all fields individually.\n\n2004-09-26 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_abr.c, ospf_dump.c, ospf_lsa.c, ospf_packet.c, ospf_vty.c,\n\t  ospf_zebra.c: Fix compiler warnings.\n\n2004-09-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_apiserver.{c,h}: lists typedef removal cleanup.\n          update some list loops to LIST_LOOP. some miscellaneous indent\n          fixups.\n          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of\n          referenced node in loop.\n \t  (ospf_apiserver_term) loops calling ospf_apiserver_free, which\n          deletes referenced nodes from apiserver_list, fixed.\n        * ospf_interface.h: lists typedef removal cleanup.\n        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list\n          loops to LIST_LOOP. miscellaneous style and indent fixups.\n        * ospf_te.{c,h}: ditto\n\t* ospf_packet.c: lists typedef removal cleanup.\n          (ospf_write) ifdef fragmentation support. move actual\n\t  fragmentation out to a new, similarly ifdefed, function.\n\t  (ospf_write_frags) fragmented write support, moved from previous.\n\n2004-09-23 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* *.[c|h]: list -\u003e struct list *, listnode -\u003e struct listnode *.\n\n2004-09-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: Fix bugzilla #107\n \t  (ospf_packet_max) get rid of the magic 88 constant\n\t  (ospf_swab_iph_ton) new function. set ip header to network order,\n\t  taking BSDisms into account.\n\t  (ospf_swab_iph_toh) the inverse.\n\t  (ospf_write) Add support for IP fragmentation, will only work on\n\t  linux though, other kernels make it impossible. get rid of the\n\t  magic 4 constant.\n\t  (ospf_make_ls_upd) Bound check to end of stream, not to\n\t  interface mtu.\n\t  (ospf_ls_upd_packet_new) New function, allocate upd packet\n\t  taking oversized LSAs into account.\n\t  (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,\n\t  rather than statically allocating mtu sized packet buffer, which\n\t  actually was wrong - it didnt take ip header into account, which\n\t  should not be included in packet buffer.\n\t  (ospf_ls_upd_send_queue_event) minor tweaks and remove\n\t  TODO comment.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_spf_calculate): Many more comments and debug\n\t  print statements.  New function ospf_vertex_dump used in debugging.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.h (struct vertex): Comments for flags and structure members.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_route.c: When finding an alternate route, log cost as well.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_interface.c (ospf_lookup_if_params): Initialize af in\n\t  struct prefix allocated on stack.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send\n\t  acks to AllSPFRouters, rather than All-DR.\n\n2004-08-27  Hasso Tepper  \u003chasso at quagga.net\u003e\n\n\t* ospf_vty.c: Don\u0027t print ospf network type under interface only\n\t  if interface is in broadcast mode and interface type really is\n\t  broadcast. Fixes Bugzilla #108.\n\n2004-08-27  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_nexthop_calculation): Initialize address family\n\t  in on-stack struct prefix_ipv4.  Fixes point-to-multipoint SPF\n\t  calculation.\n\n2004-08-26  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): adjust size declaration of\n\t  buffer used to get interface index so that it compiles on other\n\t  than Linux and includes the required alignment space.  Probably\n\t  this was only working on sparc/sparc64 because most of\n\t  sockaddr_dl was not being written.\n\n2004-08-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: update to match sockopt renames.\n\n2004-08-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_spf.c: (ospf_spf_consider_nexthop) Add comment about issue.\n\t  Compare only against list head - all nexthops must be same cost\n\t  anyway, fixes a reference-listnode-after-delete bug noted by\n\t  Kir Kostuchenko.\n\t  (ospf_nexthop_calculation) Use ospf_spf_consider_nexthop for all\n\t  candidates attached to root.\n\n2004-07-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from\n          last fix for ospfd wedging due to oversize LSAs: dont list loop on\n          ospf_ls_upd_queue_send() - guaranteed segfault.\n\n2004-07-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_opaque.c: (ospf_opaque_lsa_flush_schedule) do not NULL out\n\t  the LSA as then free_opaque_info_per_id() can never unlock (and\n\t  free) the LSA. Reported by Gunnar Stigen.\n\n2004-07-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: Replace PKTINFO/RECVIF with call to\n\t  setsockopt_pktinfo\n\t* ospf_packet.c: Use getsockopt_pktinfo_ifindex and\n\t  SOPT_SIZE_CMSG_PKTINFO_IPV4.\n\n2004-07-14 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_ls_upd_send_queue_event) Partial fix for\n\t  problem reported by Peter Frost amongst others, where function\n\t  will spin indefinitely if update list contains LSAs greater than\n\t  MTU-headers or other condition leading to update list never being\n          cleared. Problem of what to do with these LSAs remains.\n          (ospf_make_ls_upd) add comment about large LSA problem,\n\t  indentation cleanup.\n\n2004-07-01  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* Makefile.am (lib_LTLIBRARIES): make libospf shared\n\n2004-06-30  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* Makefile.am: Add shlib support.\n\n2004-06-10 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* *: Removed ifdefs HAVE_NSSA.\n\n2004-06-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c,ospf_lsa.c: Fix typos of merge of previous.\n\t  ospf_flood.c: (ospf_process_self_originated_lsa) fix zlog format\n\n2004-05-31 Sagun Shakya \u003csagun.shakya@sun.com\u003e\n\n\t* ospf_dump.c: (ospf_lsa_header_dump) LOOKUP can return null if\n\t  index is out of range.\n\t  ospf_flood.c: endianness fix\n\t  ospf_lsa.c: Missing ntohl\u0027s on (struct lsa *)-\u003edata-\u003els_seqnum\n\t  in various places.\n\n2004-05-10 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_zebra.c, ospfd.c: Move ospf_prefix_list_update() function\n\t  to ospf_zebra.c from ospfd.c and add redistribution updates if\n\t  route-map is used in redistribution.\n\t* ospf_main.c: Remove now useless call to ospf_init().\n\n2004-05-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_zebra.c: Sync with lib/zclient changes\n\n2004-05-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: (ospf_sock_init) Check whether IP_HDRINCL is\n\t  defined. Warn at compile and runtime. Use\n\t  IPTOS_PREC_INTERNETCONTROL otherwise.\n\t* ospf_packet.c:  (ospf_associate_packet_vl) cleanup, move\n\t  some of the checks up to ospf_read, return either a\n\t  virtual link oi, or NULL.\n\t  (ospf_read) Cleanup, make it responsible for checks. Remove\n\t  the nbr lookup - moved to ospf_neighbor. Adjust all nbr\n\t  lookups to use new wrappers exported by ospf_neighbor.\n\t* ospf_neighbor.h: Add ospf_neigbour_get and ospf_nbr_lookup.\n\t* ospf_neighbor.c: (ospf_neigbour_get) Index ospf_interface\n\t  neighbour table by router-id for virtual-link ospf_interfaces,\n\t  not by peer_addr (which breaks for asymmetric vlinks)\n\t  (ospf_nbr_lookup) add a wrapper for nbr lookups to deal with\n\t  above.\n\t* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface\n\t  address for either end of a virtual-link, and hence potential cost\n\t  changes.\n\n2004-04-22 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_zebra.c: Don\u0027t ignore reject/bh routes, it\u0027s the only way\n\t  to \"summarize\" routes in ASBR at the moment.\n\n2004-04-20 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospfd.c: Unset NP flag if area is going to be normal or stub.\n\t  Fixes UNH OSPF_NSSA.1.2a comment.\n\t* ospf_abr.c: Originate default into stub/nssa area even if\n\t  summaries are disabled.\n\t* ospf_zebra.c: Don\u0027t attempt to redistribute 127.0.0.0/8.\n\n2004-04-19 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: Don\u0027t warn that export- and import-list can\u0027t be\n\t  configured to backbone area if they are applied and are working\n\t  fine.\n\n2004-02-19 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* ospf_packet.c: Don\u0027t drop packets in Solaris x86.\n\t  [quagga-dev 1005].\n\n2004-03-18 Amir Guindehi \u003camir@datacore.ch\u003e\n\n\t* ospf_opaque.c: Attempt to correct the incorrect behavior of\n\tQuagga\u0027s ospfd in the special situation that a node\u0027s opaque\n\tcapability has changed as \"ON -\u003e OFF -\u003e ON\". [quagga-dev 843].\n\n2004-02-19 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range\n\t  should be configured with the highest cost path within the range,\n\t  not lowest.\n\n2004-02-17 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface\n\t  params, nor the interface structure, if an interface delete\n\t  message is received from zebra.\n\t* ospf_interface.c: (ospf_if_delete_hook) Delete the interface\n\t  params and interface, ie that which was previously removed in\n\t  (ospf_interface_delete) above.\n\n2004-02-11 Hasso Tepper \u003chasso@estpak.ee\u003e\n\t* ospf_interface.c, ospf_zebra.c: Don\u0027t attempt to read path-\u003eoi-\u003eifp\n\t  if oi doesn\u0027t exist any more.\n\n2004-02-11 Vadim Suraev \u003cvadim.suraev@terayon.com\u003e\n\t* ospf_packet.c (ospf_ls_upd): Router should flush received network\n\t  LSA if it was originated with older router-id ([zebra 14710] #6).\n\n2003-12-08 Mattias Amnefelt \u003cmattiasa@kth.se\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) OpenBSD now leaves iph.ip_len\n\t  network byte order.\n\n2003-12-05  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* ospfd.c (ospf_network_match_iface): Rewrite code for clarity\n\twhile trying not to change semantics.  Add ifdefed-out code to\n\tavoid matching ppp interfaces whose destination address does not\n\talso match the prefix under consideration, to help out people with\n\tproblems due to as-yet-unfixed bugs with p2p interfaces coming and\n\tgoing.\n\n2003-07-25 kamatchi soundaram \u003ckamatchi@tdd.sj.nec.com\u003e\n\n        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route\n          node in body of the loop to avoid chance that route node\n          is unlocked and deleted before the next iteration tries to\n          get next route node.\n\n2003-05-24 Kenji Yabuuchi\n\n\t* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific\n\t  match for interface lookup.\n\n2003-05-18 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: Show NSSA LSA route info in \"show ip ospf database\"\n\toutput\n\n2003-05-16 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_lsa.c: Fix handling of NSSA\n\n2003-04-23 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: fix \"router xxx\" node commands in vtysh\n\n2003-04-19 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* {ospf_abr,ospfd}.c: area id\u0027s DECIMAL -\u003e ADDRESS\n\t* ospf_routemap.c: sync daemon\u0027s route-map commands to have same\n\t  syntax.\n\n2003-04-19 Sergey Vyshnevetskiy \u003cserg@vostok.net\u003e\n\n\t* ospf_packet.c: Add missing param to zlog\n\t* ospf_flood.c: remove unused vars\n\n2003-04-17 Denis Ovsienko \u003czebra@pilot.org.ua\u003e\n\n\t* ospf_interface.c: fix incorrect memset\n\n2003-04-10 Amir Guindehi \u003camir@datacore.ch\u003e\n\n\t* ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup.\n\n2003-04-03 David Watson \u003cdwatson@eecs.umich.edu\u003e\n\n\t* ospf_lsa.c: byte order fix\n\n2002-03-17  Amir Guindehi \u003camir@datacore.ch\u003e\n\n        * ospf_apiserver.[ch]: Merge Ralph Keller\u0027s OSPFAPI support.\n        * ospf_api.[ch]: Merge Ralph Keller\u0027s OSPFAPI support.\n\t* ospfclient: OSPFAPI demonstration client.\n\n2003-01-23  Masahiko Endo \u003cendo@suri.co.jp\u003e\n\n\t* ospf_ism.c: NSM event schedule bug fix.\n\n2002-10-30  Greg Troxel \u003cgdt@ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_make_md5_digest): MD5 length fix.\n\n2002-10-23  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_opaque.c: Update Opaque LSA patch.\n\n2002-10-23  Ralph Keller \u003ckeller@tik.ee.ethz.ch\u003e\n\n\t* ospf_vty.c (show_ip_ospf_database): Fix CLI parse.\n\n2002-10-23  Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_interface.c (ospf_if_stream_unset): When write queue\n\tbecomes empty stop write timer.\n\n2002-10-10  Greg Troxel \u003cgdt@ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_check_md5_digest): Change \u003e\u003d to \u003e to make it\n\tconform to RFC.\n\n2002-07-07  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.93 released.\n\n2002-06-19  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_spf.c (ospf_nexthop_calculation): Add NULL set to oi and\n\tcheck of l2.  Reported by: Daniel Drown \u003cdan-zebra@drown.org\u003e\n\t(ospf_lsa_has_link): LSA Length calculation fix.  Reported by:\n\tPaul Jakma \u003cpaulj@alphyra.ie\u003e.\n\n\t* ospfd.c (ospf_if_update): Fix nextnode reference bug.  Reported\n\tby: juris@mt.lv.\n\n2002-01-21  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospfd.c: Merge [zebra 11445] Masahiko ENDO\u0027s Opaque-LSA support.\n\n2001-08-27  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_interface.c (ospf_add_to_if): Use /32 address to register\n\tOSPF interface information.\n\t(ospf_delete_from_if): Likewise.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Likewise.\n\n2001-08-23  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_zebra.c (ospf_redistribute_unset): When redistribute type\n\tis OSPF, do not unset redistribute flag.\n\n2001-08-19  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.92a released.\n\n2001-08-15  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.92 released.\n\n2001-08-12  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospfd.c (ospf_config_write): auto-cost reference-bandwidth\n\tconfiguration display.\n\n2001-07-24  David Watson \u003cdwatson@eecs.umich.edu\u003e\n\n\t* ospf_spf.c (ospf_spf_next): Modify ospf_vertex_add_parent to\n\tcheck for an existing link before connecting the parent and child.\n\tospf_nexthop_calculation is also modified to check for duplicate\n\tentries when copying from the parent.  Finally, ospf_spf_next\n\tremoves duplicates when it merges two equal cost candidates.\n\n2001-07-23  itojun@iijlab.net\n\n\t* ospfd.c (show_ip_ospf_neighbor): Check ospf_top before use it\n\t[zebra 8549].\n\n2001-07-23  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_packet.c (ospf_write): Remove defined(__OpenBSD__) to make\n\tit work on OpenBSD.\n\n2001-06-26  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_zebra.c (config_write_ospf_default_metric): Display\n\tdefault-metric configuration.\n\n2001-06-18  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_ia.h (OSPF_EXAMINE_SUMMARIES_ALL): Remove old macros.\n\n2001-05-28  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_snmp.c (ospfIfEntry): Fix interface lookup bug to avoid\n\tcrush.\n\t(ospfIfMetricEntry): Likewise.\n\n2001-03-18  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_read): Fix typo.  Reported by: \"Jen B\n\tLin\u0027Kova\" \u003cjen@stack.net\u003e.\n\n2001-03-15  Gleb Natapov \u003cgleb@nbase.co.il\u003e\n\n\t* ospf_interface.c (ip_ospf_network): Set interface parameter.\n\t(interface_config_write): Add check for OSPF_IFTYPE_LOOPBACK.\n\n\t* ospf_zebra.c (ospf_interface_add): Set interface parameter.\n\n2001-02-21  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): Solaris also need to add\n\t(iph.ip_hl \u003c\u003c 2) to iph.ip_len.\n\n2001-02-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospfd.h (OSPF_LS_REFRESH_TIME): Fix OSPF_LS_REFRESH_TIME value.\n\tSuggested by: David Watson \u003cdwatson@eecs.umich.edu\u003e.\n\n\t* ospf_zebra.c (zebra_init): Remove zebra node.\n\n\t* ospfd.c (ospf_area_range_set): Function name is changed from\n\tospf_ara_range_cmd.\n\t(ospf_area_range_unset): New function which separated from DEFUN.\n\tNew commands are added:\n\t\"no area A.B.C.D range A.B.C.D/M advertise\"\n\t\"no area \u003c0-4294967295\u003e range A.B.C.D/M advertise\"\n\t\"no area A.B.C.D range A.B.C.D/M not-advertise\"\n\t\"no area \u003c0-4294967295\u003e range A.B.C.D/M not-advertise\"\n\n\t* ospf_lsa.c (ospf_lsa_more_recent): Fix previous change.\n\n2001-02-08  Matthew Grant \u003cgrantma@anathoth.gen.nz\u003e\n\n\t* ospf_network.c (ospf_if_add_allspfrouters): Use\n\tsetsockopt_multicast_ipv4.\n\t(ospf_if_drop_allspfrouters): Likewise.\n\n\t* ospf_lsa.c (ospf_router_lsa_install): Add rt_recalc flag.\n\t(ospf_network_lsa_install): Likewise.\n\t(ospf_summary_lsa_install): Likewise.\n\t(ospf_summary_asbr_lsa_install): Likewise.\n\t(ospf_external_lsa_install): Likewise.\n\t(ospf_lsa_install): Call ospf_lsa_different to check this LSA is\n\tnew one or not.\n\n2001-02-08  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_zebra.c (ospf_interface_delete): Do not free interface\n\tstructure when ospfd receive interface delete message to support\n\tpseudo interface.\n\n2001-02-01  Dick Glasspool \u003cdick@ipinfusion.com\u003e\n\n\t* ospfd.c (area_range_notadvertise): Change area range \"suppress\"\n\tcommand to \"not-advertise\".\n\n\t* ospfd.h (OSPF_LS_REFRESH_TIME): Change OSPF_LS_REFRESH_TIME from\n\t1800 to 60.\n\n\t* ospf_abr.c (ospf_abr_update_aggregate): When update_aggregate is\n\tupdating the area-range, the lowest cost is now saved.\n\n\t* ospf_lsa.c (ospf_lsa_more_recent): Routing to compare sequence\n\tnumbers rather than creating overflow during calculation.\n\n2001-02-01  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* zebra-0.91 is released.\n\n2001-01-31  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_db_desc_proc): Do not continue process when\n\tNSM_SeqNumberMismatch is scheduled.\n\t(ospf_ls_req): Free ls_upd when return from this function.\n\t(ospf_ls_upd_timer): When update list is empty do not call\n\tospf_ls_upd_send().  Suggested by: endo@suri.co.jp (Masahiko\n\tEndo).\n\n2001-01-26  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_lsa.c (ospf_maxage_flood): Flood LSA when it reaches\n\tMaxAge.  RFC2328 Section 14.\n\t(ospf_maxage_lsa_remover): Call above function during removing\n\tMaxAge LSA.\n\n2001-01-26  Dick Glasspool \u003cdick@ipinfusion.com\u003e\n\n\t* ospf_flood.c (ospf_flood_through_as): Function is updated for\n\tNSSA Translations now done at ospf_abr.c with no change in P-bit.\n\n\t* ospf_lsa.c (ospf_get_nssa_ip): Get 1st IP connection for Forward\n\tAddr.\n\t(ospf_install_flood_nssa):  Leave Type-7 LSA at Lock Count \u003d 2.\n\n\t* ospf_ase.c (ospf_ase_calculate_route): Add debug codes.\n\n\t* ospf_abr.c (ospf_abr_translate_nssa): Recalculate LSA checksum.\n\n\t* ospf_packet.h (OSPF_SEND_PACKET_LOOP): Added for test packet.\n\n\t* ospf_dump.c (ospf_lsa_type_msg): Add OSPF_GROUP_MEMBER_LSA and\n\tOSPF_AS_NSSA_LSA.\n\n\t* ospfd.c (data_injection): Function to inject LSA.  This is\n\tdebugging command.\n\n2001-01-11  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_route.c (ospf_route_match_same): Remove function.\n\t(ospf_route_match_same_new): Renamed to ospf_route_match_same.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Add check for\n\toi-\u003eaddress.  Suggested by Matthew Grant\n\t\u003cgrantma@anathoth.gen.nz\u003e.\n\t(ospf_zebra_add): Remove function.\n\t(ospf_zebra_add_multipath): Rename to ospf_zebra_add.\n\n\t* ospf_interface.c: Remove HAVE_IF_PSEUDO part.\n\n\t* ospf_zebra.c: Likewise.\n\n2001-01-10  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_ase.c: Remove OLD_RIB part.\n\n\t* ospf_route.c: Likewise.\n\n\t* zebra-0.90 is released.\n\n\t* ospf_packet.c (ospf_recv_packet): Use ip_len adjestment code to\n\tNetBSD.\n\n2001-01-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_route.c (ospf_route_delete): Use\n\tospf_zebra_delete_multipath.\n\n2001-01-09  Matthew Grant \u003cgrantma@anathoth.gen.nz\u003e\n\n\t* ospf_interface.c (ospf_if_cleanup): Function name is renamed\n\tfrom ospf_if_free().  Rewrite whole procudure to support primary\n\taddress deletion.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Add primary\n\taddress deletion process.\n\n2001-01-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): OpenBSD has same ip_len\n\ttreatment like FreeBSD.\n\n2001-01-09  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_packet.c (ospf_recv_packet): FreeBSD kernel network code\n\tstrips IP header size from receiving IP Packet.  So we adjust\n\tip_len to whole IP packet size by adding IP header size.\n\n2001-01-08  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_network.c (ospf_serv_sock): When socket() is failed return\n"
    },
    {
      "commit": "9985f83ce7102f64b15f744b60320f8d14a8a5ff",
      "tree": "344629bdc2b4a7d53b8d7ca1705c9be2ca282d18",
      "parents": [
        "083ee9d9cdbf72a452b9af96e62d0625ea712cd9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "message": "2005-02-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Update code to match stream.h changes.\n\t  stream_get_putp effectively replaced with stream_get_endp.\n\t  stream_forward renamed to stream_forward_getp.\n\t  stream_forward_endp introduced to replace some previous\n\t  setting/manual twiddling of putp by daemons.\n\t* lib/stream.h: Remove putp. Update reference to putp with endp.\n\t  Add stream_forward_endp, which daemons were doing manually.\n\t  Rename stream_forward to stream_forward_getp.\n\t  lib/stream.c: Remove/update references to putp.\n\t  introduce stream_forward_endp.\n"
    },
    {
      "commit": "083ee9d9cdbf72a452b9af96e62d0625ea712cd9",
      "tree": "25843a21e1d0ed9dd9125a8ed117e895b51bd432",
      "parents": [
        "8cfde37647b40640667ffb38c32b575da1476586"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 09 15:35:50 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 09 15:35:50 2005 +0000"
      },
      "message": "2005-02-09 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the\n\t  error message.\n"
    },
    {
      "commit": "ba6454ec1fd1ca7266b10eba07d016becb22db74",
      "tree": "1ee3f882924db44883e1023e5081741e10d86b3a",
      "parents": [
        "3a9eb091494f7afb8ce6bf82b8e1a20bb2a8f10f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:37:30 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:37:30 2005 +0000"
      },
      "message": "2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Improve passive_interface comment.  Add new\n\t  multicast_memberships bitmask to struct ospf_interface to track\n\t  active multicast subscriptions.  Declare new function\n\t  ospf_if_set_multicast.\n\t* ospf_interface.c: (ospf_if_set_multicast) New function to configure\n\t  multicast memberships properly based on the current\n\t  multicast_memberships status and the current values of the\n\t  ospf_interface state, type, and passive_interface status.\n\t  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is\n\t  now handled by ism_change_state\u0027s call to ospf_if_set_multicast).\n\t  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now\n\t  handled by ism_change_state).\n\t* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave\n\t  the DRouters multicast group (now handled by ism_change_state\u0027s call\n\t  to ospf_if_set_multicast).\n\t  (ism_change_state) Add call to ospf_if_set_multicast to change\n\t  multicast memberships as necessary to reflect the new interface state.\n\t* ospf_packet.c: (ospf_hello) When a Hello packet is received on a\n\t  passive interface: 1. Increase the severity of the error message\n\t  from LOG_INFO to LOG_WARNING; 2. Add more information to the error\n\t  message (packet destination address and interface address);\n\t  and 3. If the packet was sent to ospf-all-routers, then try\n\t  to fix the multicast group memberships.\n\t  (ospf_read) When a packet is received on an interface whose state\n\t  is ISM_Down, enhance the warning message to show the packet\n\t  destination address, and try to update/fix the multicast group\n\t  memberships if the packet was sent to a multicast address.\n\t  When a packet is received for ospf-designated-routers, but the\n\t  current interface state is not DR or BDR, then increase the\n\t  severity level of the error message from LOG_INFO to LOG_WARNING,\n\t  and try to fix the multicast group memberships.\n\t* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from active to passive.\n\t  (no_ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from passive to active.\n\t  (show_ip_ospf_interface_sub) Show multicast group memberships.\n"
    },
    {
      "commit": "3a9eb091494f7afb8ce6bf82b8e1a20bb2a8f10f",
      "tree": "82408688827d3dbae81b240aa1da60b05201fea0",
      "parents": [
        "b14ee00b7f23f216b5f159e88de915b8755b97d6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 08 11:29:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 08 11:29:41 2005 +0000"
      },
      "message": "2005-02-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.\n"
    },
    {
      "commit": "847947f20b152f0b64057a7115e118b44d238b5c",
      "tree": "68f726878177a594e258ce5312b7937951d3b421",
      "parents": [
        "dd4c593fb88b7c6cf5f27aa8a8286644743ed58a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "message": "2005-02-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,\n\t  not for event ISM_InterfaceDown.  And improve the message by\n\t  adding the interface flags.\n\t* if.h: Declare if_flag_dump.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "c3eab8714368569d25f6dc87f6620528e0d7a118",
      "tree": "d6366cef5ff108f6628713e3573eeb72b81847bf",
      "parents": [
        "b1aa147d09b0e06992cdb39ed11b46df0a3b984f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 15:52:07 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 15:52:07 2005 +0000"
      },
      "message": "2005-01-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_packet_add) If oi-\u003eobuf is NULL, print\n\tan error message and return.\n\t(ospf_read) If the interface state is ISM_InterfaceDown, issue\n\ta warning message and ignore the packet.\n"
    },
    {
      "commit": "86f1fd9615391485baf37afe1055b7d8bf64b4a8",
      "tree": "3a18671a9a94e952fabcb5ecca70c0bc80bcb523",
      "parents": [
        "220d0c0ea3a3aab81836a6aad4137aa40270512d"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Jan 10 14:20:43 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Jan 10 14:20:43 2005 +0000"
      },
      "message": "2005-01-10  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n        * ospf_packet.h: Remove commented out definition of\n        OSPF_MAX_PACKET; neither it or the uncommented one are used any more.\n\n        * ospf_packet.c (ospf_make_ls_upd): Leave room for authentication\n        when deciding if an update will fit.\n        (ospf_packet_authspace): Factor out calculation of size required\n        for authentication.\n        (ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.\n        Don\u0027t confuse readers that there is a macro.\n"
    },
    {
      "commit": "17eaa728aae282e373b98a8d193c5c48c24e1a0f",
      "tree": "a629736bfc2e0a07152a1d539df7f604e576c619",
      "parents": [
        "b87f772abe45b24f3aeefc807d0a2e4344ec0754"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 29 21:04:48 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 29 21:04:48 2004 +0000"
      },
      "message": "2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce severity of \"Negotiation done\"\n\t  messages from LOG_WARNING to LOG_INFO, since this seems to be\n\t  normal.\n"
    },
    {
      "commit": "b87f772abe45b24f3aeefc807d0a2e4344ec0754",
      "tree": "0a18d319acddbaa7a759e760a460e0751e03ac73",
      "parents": [
        "be21024692560b48a77e691fe31c16bb854376de"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 29 20:41:26 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 29 20:41:26 2004 +0000"
      },
      "message": "2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Always look up the interface if\n\t  ospf_recv_packet returns NULL ifp, since some platforms such\n\t  as Solaris 8 appear to support ifindex retrieval but don\u0027t.\n"
    },
    {
      "commit": "be21024692560b48a77e691fe31c16bb854376de",
      "tree": "e94897471606e1f0fc4e0778959ce7c1186d78f0",
      "parents": [
        "b30c5e67a20b1a092faa56fe349171eb1da386b0"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:12:59 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:12:59 2004 +0000"
      },
      "message": "add XXX comment that perhaps we need to recover from short headers.\n"
    },
    {
      "commit": "3aa8d5f9893c182eb27f0f6ab354a77edbf1b9f0",
      "tree": "b2cc0ac454542e114bf3fcb4d85c62d9074903f1",
      "parents": [
        "3378d2099440cb3a14dc7531a3221d4140e186e2"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Dec 11 18:00:06 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Dec 11 18:00:06 2004 +0000"
      },
      "message": "2004-12-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Should be static, not global.\n\t  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning\n\t  messages to include identifying information (e.g. router id).\n\t* ospf_nsm.c: (nsm_change_state) Improve info message to include\n\t  router id and state names.\n"
    },
    {
      "commit": "2a42e285ed1b3891a479e52bf0bab958d68ca18e",
      "tree": "7f58188e992943424474199f11849f04ce62c665",
      "parents": [
        "e588f21f2adae26eaee8789bacc3a45002e86e94"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 18:43:03 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 18:43:03 2004 +0000"
      },
      "message": "2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n"
    },
    {
      "commit": "1210fa6674e36a6acbd44e571e681842c5838501",
      "tree": "e75978f4294db08b452e2694cfd9074d8ebe2cd4",
      "parents": [
        "887c44a4f3d8219dc5b1c52b5dcde1f31d52b73d"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 16:43:24 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Dec 03 16:43:24 2004 +0000"
      },
      "message": "2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message\n\t  from LOG_NOTICE to LOG_DEBUG.\n"
    },
    {
      "commit": "bec595ada58ebfa98ad49220f29ab28b58549094",
      "tree": "277b0e46c07121b6be7e68a694b4849de51a5383",
      "parents": [
        "b9c35001dfa81e6cddfac0b36549b1ed4b84b5e7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 30 22:38:43 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Nov 30 22:38:43 2004 +0000"
      },
      "message": "2004-11-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning\n\t  message and in comment.\n\t  (ospf_db_desc) Warning message that a packet is being discarded\n\t  should give the router id of the packet source.  Fix spelling\n\t  of packet in two warning messages.\n\t  (ospf_ls_req) Warning message that a link state request is being\n\t  discarded should give the router id of the neighbor that sent it.\n"
    },
    {
      "commit": "6099b3b56956322567323c11fd698b2328c6826b",
      "tree": "fa537bd0eaa9f7d824f39445eabc928db59050ca",
      "parents": [
        "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c\n\t  needs to include \"log.h\" to pick up the declaration.\n"
    },
    {
      "commit": "69e1325faf47762fd08917b8f20a20abb59d41e6",
      "tree": "60d6df8c1d754c84fa3108a5f19bbf91cb084ab1",
      "parents": [
        "fbb6709986ee29b57a8a6103c592de80647ead00"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "message": "Rationalize CMSG_SPACE usage:\n\n  in lib/zebra.h, ensure that RFC3542-required CMSG_SPACE and CMSG_LEN\n  are defined.  Warn if alignment assumptions are made, since they are\n  i386-centric.\n\n  in lib/sockopt.h, declare that sockopt sizes are without\n  CMSG_SPACE-required padding - just simple sizeof.\n\n  in ospfd/ospf_packet.c, simply use CMSG_SPACE\n\nThis should remove all instances of CMSG_ALIGN from the source code.\nThis is a nonstandard, though rational, construct; quagga should use\nonly those defines in RFC3542.\n"
    },
    {
      "commit": "62d8e96a06e664c929a164bfb66b515d1c6877a8",
      "tree": "62c02b3284bbd08b1e5fe384f08ce0eff18c967c",
      "parents": [
        "3c035aa8716efa6f677e43435c5eb9bac6825518"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Nov 02 20:26:45 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Nov 02 20:26:45 2004 +0000"
      },
      "message": "2004-11-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points\n\t  to it. Add convenience pointer to msg-\u003emsg_iov[1], and use this,\n\t  fixing the unfortunate borkenness introduced in moving of this code\n\t  to a function.\n\t  (ospf_write) remove iovp and fix up call to previous.\n\t  (ospf_ls_upd_packet_new) cast size to long int - unfortunately\n          glibc\u0027s size_t format modifier is not portable.\n"
    },
    {
      "commit": "64511f394a90602a31cbe1660be426c16439322c",
      "tree": "197fd4d90a7c6a4b627a67a078e8ff6d1f2372cb",
      "parents": [
        "039b95776979c74f7d02719800f9d742338e815b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 18:01:13 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 18:01:13 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_ls_upd_packet_new) Format for size_t should\n          be ld.\n\t* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of\n\t  THREAD_ARG to store an integer, but it should at least use same\n          same type to retrieve the value. Assert value is sane.\n"
    },
    {
      "commit": "37ccfa3defa0a3cfb89ac16488ac762246416d23",
      "tree": "d02df9826286f9d6016ff79da6aeabb09548cfc6",
      "parents": [
        "2bfc7c05dde63f828a06892e33abcae2e30dd18a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 11:24:51 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 31 11:24:51 2004 +0000"
      },
      "message": "2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) Add debug output\n\t  (ospf_write) set type early, so we can pass it to\n\t  ospf_write_frags.\n\t  (ospf_ls_upd_packet_new) print size in debug output when too large\n\t  packet is encountered.\n"
    },
    {
      "commit": "06f953f7abd1ac10e059fc756878ac135bb76c58",
      "tree": "c18b23bb5b309ca9940c00f173028b4be85abd88",
      "parents": [
        "4927cf0bf0828f2c4a9bda30f3c890d1835c7370"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 17:00:38 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 17:00:38 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd/ospf_packet.c: setsockopt_pktinfo -\u003e setsockopt_ifindex\n\t* zebra/irdp_main.c: ditto\n"
    },
    {
      "commit": "ac1912327ea078f1336d54fdb1177592f94a7980",
      "tree": "0c1f6707631855387c9babee1ebe7e92e3fa4cf0",
      "parents": [
        "23b9c61e5bb60d557b07dc1d7c4d7614f63dc009"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 12:05:17 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 12:05:17 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()\n          function.\n        * ospf_packet.c: (ospf_read) manually look up ifindex\n          if system could not have returned one, eg openbsd.\n"
    },
    {
      "commit": "6c83567192ada1a66822c3f35580ce6a85f51ac9",
      "tree": "39ef09859fae79b7c7e234a671bf2e04f8e9264a",
      "parents": [
        "6b33361187feeb8c9c257ec149b4f75238af6c48"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:00:30 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:00:30 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global) Const char update and signed/unsigned fixes.\n\t* (various headers) size defines should be unsigned.\n\t* ospf_interface.h: remove duplicated defines, include the\n\t  authoritative header - though, these defines should probably\n          be moved to a dedicated header, or ospfd.h.\n\t* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.\n\t* ospf_packet.c: (ospf_write) cast result of shift to unsigned.\n"
    },
    {
      "commit": "6b33361187feeb8c9c257ec149b4f75238af6c48",
      "tree": "41f383954c59ad166991014834e0dbe43639e345",
      "parents": [
        "9076fbd333cbd39b0fae7848de533dfe376af7fe"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 10:11:25 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 10:11:25 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order\n\t  remove ntohs that should have dissappeared. Take struct ip\n\t  as argument, caller has to know there\u0027s an IP header at start of\n\t  stream anyway.\n\t* ospf_dump.h: update declaration of ospf_ip_header_dump.\n\t* ospf_packet.c: (ospf_write) correct call to\n\t  sockopt_iphdrincl_swab_htosys which was munging the header.\n\t  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.\n\t  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as\n\t  we have it.\n"
    },
    {
      "commit": "eb1ce6059a00f3f0dd92c965aa5982907b54c00d",
      "tree": "ebd6583ba2f2f9909c25653d0349662e08c26ecf",
      "parents": [
        "2e864cfa12724ec20e82f0a24e1be5929e3a0cef"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 08:17:22 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 08:17:22 2004 +0000"
      },
      "message": "Compiler warnings fixes round 1.\n"
    },
    {
      "commit": "18b12c387e2bcd8a0e81a8d2635c1ef52c8a9a7d",
      "tree": "1fe5f83b587e2848ddb981c625faa5c27ed57662",
      "parents": [
        "96e27c9928b5078526f2a7564700dbdafe2c8d42"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:38:29 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:38:29 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: replace ospf_swap_iph_to... with\n          sockopt_iphdrincl_swab_...\n"
    },
    {
      "commit": "6a99f83175d7b5b5868fb82328d569672b8bb9a4",
      "tree": "447f98abc31a7260bb2b354809312e4e6fdfda96",
      "parents": [
        "9172ee0e5dc8c6f6929821fb1433699700e53114"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 27 12:56:30 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 27 12:56:30 2004 +0000"
      },
      "message": "2004-09-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER\n\t  Apply to offset too. Print ip_cksum, lets not worry about\n\t  possible 2.0.37 compile problems.\n\t* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use\n\t  HAVE_IP_HDRINCL_BSD_ORDER.\n\t  (ospf_recv_packet) ditto.\n\t  (ospf_write) Fixup iov argument to ospf_write_frags.\n"
    },
    {
      "commit": "68defd6ddbc840f4877a817dd651a243a398049d",
      "tree": "41ef70f45a02bf5ffc6d4be6b1261010cda1979d",
      "parents": [
        "0dae85e67ada6044ce895b3e64a3a223776eab5b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 27 07:27:13 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 27 07:27:13 2004 +0000"
      },
      "message": "2004-09-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write) (struct msghdr).msg_name is caddr_t\n\t  on most platforms.\n\t  (ospf_recv_packet) ditto. And msg_flags is not always there\n          memset struct then set fields we care about rather than\n          initialise all fields individually.\n"
    },
    {
      "commit": "c9e52be3f4d98943b67fbbe5d9a7ccd823b88326",
      "tree": "d4045a946af3be8bbdc303162778e8c44057e2f9",
      "parents": [
        "e473b032b860444b9656cee1654b0120f77b52b1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:09:34 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:09:34 2004 +0000"
      },
      "message": "Compiler warnings fixes.\n"
    },
    {
      "commit": "0bfeca3f000ea9bec0ca167f5c9cc3927ac370a9",
      "tree": "fa06880cdd05b72005b9ee21e4c9b0b9fd59db1d",
      "parents": [
        "87d6f87aec1920ca785de465282a772f9e459af8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:07:54 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:07:54 2004 +0000"
      },
      "message": "2004-09-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write) ifdef fragmentation support.\n          move actual fragmentation out to a new, similarly ifdefed, function.\n\t  (ospf_write_frags) fragmented write support, moved from previous.\n"
    },
    {
      "commit": "87d6f87aec1920ca785de465282a772f9e459af8",
      "tree": "005eeed9ca8a62226a12392d28b1ab60a7cac9d4",
      "parents": [
        "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:01:38 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:01:38 2004 +0000"
      },
      "message": "2004-09-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_apiserver.{c,h}: lists typedef removal cleanup.\n          update some list loops to LIST_LOOP. some miscellaneous indent\n          fixups.\n          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of\n          referenced node in loop.\n        * ospf_interface.h: lists typedef removal cleanup.\n        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list\n          loops to LIST_LOOP. miscellaneous style and indent fixups.\n        * ospf_te.{c,h}: ditto\n\t* ospf_packet.c: lists typedef removal cleanup.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "68b7339ad88c10d20738f8dd0bf6bb6388474970",
      "tree": "ebe39408c3ab8f0b30df54c4020c454c305cdd63",
      "parents": [
        "4fc7085cfa36103b491aec130346f1a632187849"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Sep 12 14:21:37 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Sep 12 14:21:37 2004 +0000"
      },
      "message": "2004-09-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_packet.c: Fix bugzilla #107\n          (ospf_packet_max) get rid of the magic 88 constant\n          (ospf_swab_iph_ton) new function. set ip header to network order,\n          taking BSDisms into account.\n          (ospf_swab_iph_toh) the inverse.\n          (ospf_write) Add support for IP fragmentation, will only work on\n          linux though, other kernels make it impossible. get rid of the\n          magic 4 constant.\n          (ospf_make_ls_upd) Bound check to end of stream, not to\n          interface mtu.\n          (ospf_ls_upd_packet_new) New function, allocate upd packet\n          taking oversized LSAs into account.\n          (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,\n          rather than statically allocating mtu sized packet buffer, which\n          actually was wrong - it didnt take ip header into account, which\n          should not be included in packet buffer.\n          (ospf_ls_upd_send_queue_event) minor tweaks and remove\n          TODO comment.\n"
    },
    {
      "commit": "630e48072a4a4685a7c04a7b73ae9170d2f0844a",
      "tree": "1a343e551a0ce24d8c8c93aa62860742749355ee",
      "parents": [
        "94755ea13e9466fc4590994b551dc23a44571622"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Aug 31 17:28:41 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Aug 31 17:28:41 2004 +0000"
      },
      "message": "Assorted changes from work at BBN.  Most are minor, and several are in\nsupport of more significant changes not in this commit.  The last item\nin the ChangeLog below may be needed for p2mp to work correctly.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* hash.c (hash_iterate): Save next pointer before calling\n\tprocedure, so that iteration works even if the called procedure\n\tdeletes the hash backet.\n\n\t* linklist.h (listtail): new macro, not yet used.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_spf_calculate): Many more comments and debug\n\t  print statements.  New function ospf_vertex_dump used in debugging.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.h (struct vertex): Comments for flags and structure members.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_route.c: When finding an alternate route, log cost as well.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_interface.c (ospf_lookup_if_params): Initialize af in\n\tstruct prefix allocated on stack.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send\n\tacks to AllSPFRouters, rather than All-DR.\n"
    },
    {
      "commit": "e304982e498e58ca77e8c7dd8f1bf83f1e50ca27",
      "tree": "9acefd51f0a452b3a1c9bd6b4a568c898a2c83f4",
      "parents": [
        "d0deca68371c222d1b2ff3fcf61312506395861c"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:19:40 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:19:40 2004 +0000"
      },
      "message": "fix typo in previous commit\n"
    },
    {
      "commit": "d0deca68371c222d1b2ff3fcf61312506395861c",
      "tree": "387b78bd5cf21d645f33617ea4b5bb7eb58ce613",
      "parents": [
        "afa43b23925175ff750d91bbd1c639b47bcb597e"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:14:07 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:14:07 2004 +0000"
      },
      "message": "2004-08-26  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): adjust size declaration of\n\tbuffer used to get interface index so that it compiles on other\n\tthan Linux and includes the required alignment space.  Probably\n\tthis was only working on sparc/sparc64 because most of sockaddr_dl\n\twas not being written.\n"
    },
    {
      "commit": "863082d528befe5e6093b120f0f11fb4e4aac455",
      "tree": "482aa7abd1912830f6386db5d58b18d3a7851c0d",
      "parents": [
        "2abb1cf3c8e3a313eaddc53501b4469a8f42b9b0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 19 04:43:43 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 19 04:43:43 2004 +0000"
      },
      "message": "2004-08-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_packet.c: update to match sockopt renames.\n"
    },
    {
      "commit": "48fe13bfd73b5e080aaf9d8964b4c07f030bf24a",
      "tree": "04f5a6d9cfd182edfffa66b0797b23e88d1ccc36",
      "parents": [
        "fbe31d82581e82f59ddacff0e1db41d2f7c3baf6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 27 17:40:44 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 27 17:40:44 2004 +0000"
      },
      "message": "2004-07-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from\n          last fix for ospfd wedging due to oversize LSAs: dont list loop on\n          ospf_ls_upd_queue_send() - guaranteed segfault.\n"
    }
  ],
  "next": "2dd8bb4e9b296782f361008b5aa959ac51e16a4c"
}
