)]}'
{
  "log": [
    {
      "commit": "9c27ef9b9c26db0af507869c2866c4a8463f4ae7",
      "tree": "72279949d2ac9f10f6e62a5a18e332a8b4e02dd5",
      "parents": [
        "b9d92881f5d45601c4268d99baec8835068b73c2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 04 07:32:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 04 07:32:57 2006 +0000"
      },
      "message": "[ospfd] Fix SPF of virtual-links\n\n2006-04-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) More Virtual-link fixes, again with much help in\n\t  testing / debug from Juergen Kammer. Primarily in SPF.\n\t* ospf_spf.h: Add guard. ospf_interface.h will include this\n\t  header.\n\t* ospf_interface.h: Modify ospf_vl_lookup definition to take\n\t  struct ospf as argument, so as to allow for NULL area\n\t  argument.\n\t  (struct ospf_vl_data) Remove out_oi, instead add a struct\n\t  vertex_nexthop, to use as initial nexthop for backbone paths\n\t  through a vlink.\n\t* ospf_interface.c: (ospf_vl_lookup) Modified to allow\n\t  NULL area to be passed to indicate \"any\" (first) area.\n\t  Add extra debug.\n\t  (ospf_vl_set_params) vl_oi -\u003e nexthop. Add extra debug.\n\t  (ospf_vl_up_check) Fix debug, inet_ntoa returns a static\n\t  buffer..\n\t* ospf_route.c: (ospf_intra_add_router) Vlinks dont go through\n\t  backbone, don\u0027t bother checking.\n\t* ospf_spf.c: (static struct list vertex_list) Record vertices\n\t  that will need to be freed.\n\t  (cmp) Order network before router vertices, as required,\n\t  wasn\u0027t implemented.\n\t  (vertex_nexthop_free) Mild additional robustness check.\n\t  (vertex_parent_free) Take void argument, as this function\n\t  is passed as list deconstructor for vertex parent list.\n\t  (ospf_vertex_new) More debug. Set deconstructor for parent\n\t  list. Track allocated vertices on the vertex_list.\n\t  (ospf_vertex_free) Get rid of the tricky recursive cleanup of\n\t  vertices. Now frees only the given vertex.\n\t  (ospf_vertex_add_parent) Fix assert.\n\t  (ospf_nexthop_calculation) Fix calculation of nexthop for\n\t  VLink vertices, lookup the vl_data and use its previously\n\t  recorded nexthop information.\n\t  (ospf_spf_calculate) Vertices are freed simply by deleting\n\t  vertex_list nodes and letting ospf_vertex_free as deconstructor\n\t  work per-node.\n\t  (ospf_spf_calculate_timer) Trivial optimisation, leave\n\t  backbone SPF calculation till last to reduce SPF churn on\n\t  VLink updates.\n\t* ospf_vty.c: (ospf_find_vl_data) update call to ospf_vl_lookup\n\t  (no_ospf_area_vlink_cmd) ditto.\n\t  (show_ip_ospf_interface_sub) For Vlinks, the peer address is\n\t  more interesting than the output interface.\n"
    },
    {
      "commit": "478aab9812fe06d77fd2f4e0b773a6e1ede18a3a",
      "tree": "d441d5c41fdb02752c2c24a08a4babbfe63f02e3",
      "parents": [
        "ab2416a0f3583545f683310adfc7ebce11d79622"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Apr 03 21:25:32 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Apr 03 21:25:32 2006 +0000"
      },
      "message": "[ospfd] Fix virtual-link handling in nbrs route-table, exposed by bug#234 fix\n\n2006-04-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Fix issues with handling of Vlinks and entries\n\t  in the nbrs route-table which were highlighted by the\n\t  nsm/nbr_self fixes from bug #234. Many thanks to Juergen\n\t  Kammer for his help and efforts in testing out debug patches to\n\t  pinpoint the issue.\n\t* ospf_interface.c: (ospf_vl_new) Add nbr_self for Vlink.\n\t* ospf_neighbor.c: (ospf_nbr_key) new static function, helper\n\t  to create key in nbrs table for a given nbr.\n\t  (ospf_nbr_delete) Use ospf_nbr_key. Add an assert() to\n\t  document an expected state.\n\t  (ospf_nbr_add_self) Ditto.\n\t  (ospf_nbr_lookup_by_addr) Add an assert.\n\t* ospf_nsm.c: (nsm_kill_nbr) Can never kill the nbr_self\n\t  psuedo-neighbour.\n"
    },
    {
      "commit": "075c2011bbec618934637ead3fd6dec65cd30a45",
      "tree": "47e252e3f2d524a520d9be081af0bbaa2963e5c7",
      "parents": [
        "d4ce4f681e04bdd11f5bc7ab30bc6e9048fdf6d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:34:31 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:34:31 2006 +0000"
      },
      "message": "[ospfd] Fix failure of Fletcher checksum with certain compilers\n\n2006-03-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_checksum) Add an explicit cast to avoid\n\t  the ambiguities of ANSI and C99 C with respect to type\n\t  conversion. Detailed problem report and test case with\n\t  example data supplied by Dmitry Ivanov \u003cdimss@telecentrs.lv\u003e.\n"
    },
    {
      "commit": "1a8ee0ec18ac280fda9362259d362805ce62be7d",
      "tree": "2d29cc46074d35940ebc613a0eeecb6ab8ffb4a3",
      "parents": [
        "c2b478d7a4fae2eb2f7f895b80d36af9c8e73ab0"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:20:00 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:20:00 2006 +0000"
      },
      "message": "[ospfd] ignore loopbacks for received interface validation\n\n2006-03-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_interface.c: (ospf_if_lookup_recv_if) Ignore loopbacks,\n\t  we can never ever receive packets on those. Should fix\n\t  case where CARP is run with address in same subnet as real\n\t  interface. Problem report and diagnosis thanks to:\n\t  Landon Fuller \u003clandonf@opendarwin.org\u003e.\n\t  However, ospf_read() still can\u0027t deal deterministically with\n\t  multiple interfaces in same subnet.\n"
    },
    {
      "commit": "c2b478d7a4fae2eb2f7f895b80d36af9c8e73ab0",
      "tree": "4eb613cd2aa57614b8215e6a671b247c9a6fea30",
      "parents": [
        "a625ca3cd2df6016aef97096eb927b783eb26d7f"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:16:11 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 14:16:11 2006 +0000"
      },
      "message": "[ospfd] Fix incorrect byte-order conversion of OSPF_MAX_SEQUENCE_NUMBER\n\n2006-03-23 Steve Lawson \u003csteve.lawson@aheadcomusa.com\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_install) Fix incorrect byte-order\n\t  conversion of OSPF_MAX_SEQUENCE_NUMBER\n"
    },
    {
      "commit": "e8e1946edf6ba87ef53832cdceccc39d7f0c3f26",
      "tree": "fcdaf92bf4129a8a58825bd21ae841a6b3b2bda8",
      "parents": [
        "779adb0147cfff1a831b08853976342ad2110fcd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "message": "[compiler] miscellaneous trivial compiler warning fixes\n\n2006-01-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) various miscellaneous compiler warning fixes.\n          Remove redundant break statements from switch clauses\n          which return.\n          return from main, not exit, cause it annoys SOS.\n          Remove stray semi-colons which cause empty-statement\n          warnings.\n\t* zebra/main.c: (sighup) remove private declaration of external\n\t  function.\n"
    },
    {
      "commit": "779adb0147cfff1a831b08853976342ad2110fcd",
      "tree": "76ec1993a7a429d24bda595254348dbd7dc4bebc",
      "parents": [
        "af887b5111ada0e8cd961e9479aa9d39796a80c8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 15:07:38 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 15:07:38 2006 +0000"
      },
      "message": "[ospfd] Add support for oversized LSAs.\n\n2006-01-18 Juergen Kammer \u003cj.kammer@eurodata.de\u003e\n\n\t* ospf_lsa.c: (ospf_router_lsa_new) dont take reference to the\n\t  stream data until it is constructed, data reference is\n\t  volatile due to the potential resize in link_info_set\n\n2006-01-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_lsa.c: (link_info_set) Resize the stream if required and\n\t  possible. Return number of links added.\n\t  (lsa_link_*_set) use return value from previous.\n\t* ospf_lsa.h: Add OSPF_ROUTER_LSA_LINK_SIZE define.\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": "1a643f88b238147dc2cfbe137d9feae7e3f3546e",
      "tree": "8855528746546e29dd645d80a6df22eb84bb351a",
      "parents": [
        "818e56cf2723843377d2881a6b81b8adc0fe9160"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:08:19 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:08:19 2006 +0000"
      },
      "message": "[ospfd] Bug #234. Fix nbr_self reinitialisation after down/up.\n\n2006-01-10 Len Sorensen \u003clennartsorensen@ruggedcom.com\u003e\n\n\t* (general) Bug #234, see also [quagga-dev 3902].\n\t  Fix problem with nbr_self not being properly reinitialised\n\t  when an interface comes up, after having been down.\n\t  Some re-arrangement done by Paul Jakma, any bugs introduced\n\t  on top of Len\u0027s suggested changes are his.\n\t* ospf_neighbor.c: (ospf_nbr_add_self) centralise\n\t  initialisation of nbr_self parameters here.\n\t* ospf_interface.c: (ospf_if_new) deleting initialisation of\n\t  parameters of nbr_self, just rely on call to\n\t  ospf_nbr_add_self.\n\t  (ospf_if_cleanup) ditto.\n\t* ospfd.c: (ospf_network_run) ditto.\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": "98429f6d07b0bac006eb14aea13c1d989fc835ed",
      "tree": "efe6d2709a93147939544e63bba81b2ba24823d5",
      "parents": [
        "c42c177de3ee3aa50c25b5e957c9ba284f19bf6b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 22:11:54 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 22:11:54 2006 +0000"
      },
      "message": "[ospfd] fix rare leak of struct connected, in an error path.\n\n2006-01-10 Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_zebra.c: (ospf_interface_address_delete) fix rare leak of\n\t  struct connected in an error case.\n"
    },
    {
      "commit": "c42c177de3ee3aa50c25b5e957c9ba284f19bf6b",
      "tree": "32414691a47de0aa8980c51a7216dfe2e1f1d878",
      "parents": [
        "867528434d32102b02e2538dcaa7c86aaf47f695"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:36:49 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:36:49 2006 +0000"
      },
      "message": "[ospfd] trim redundant strings\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (config_write_ospf_distribute) trim down\n\t  redundant strings.\n"
    },
    {
      "commit": "867528434d32102b02e2538dcaa7c86aaf47f695",
      "tree": "45c996e73efe19e105a26f441f5617948c98f6ba",
      "parents": [
        "067fca86323b189fabf4c64c0b9ccb98a458b981"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:34:46 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 20:34:46 2006 +0000"
      },
      "message": "[ospfd] fix automatic router-id and network enable bug.\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.c: (ospf_network_run) checking to see if router-id\n\t  is set should be on ospf-\u003erouter_id, not router_id_static.\n\t  This was causing ospfd to not start if router-id had not\n\t  been configured statically.\n\t  (ospf_if_update) ditto.\n"
    },
    {
      "commit": "c9c93d50cc9cae2f7878434431eafab8f7ee8d89",
      "tree": "f027b74dc63f5716169bdfcdaedf7980abb58d2a",
      "parents": [
        "00c290e02edd6c906b669de9f31a45d14ed8bec0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "message": "[ospfd] rename graceful to deferred, fix a tiny compile warning.\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) s/graceful/deferred/ in all files, the former term\n\t   is confusing wrt OSPF Graceful-Restart.\n\t* ospfd.c: (ospf_deferred_shutdown_check) dont return\n\t  a function which returns void. SOS complains about this.\n\t  (ospf_finish)\n"
    },
    {
      "commit": "00c290e02edd6c906b669de9f31a45d14ed8bec0",
      "tree": "5d81084291d38b18144e6f53847026d24587b400",
      "parents": [
        "89368d9f8b70fef5c196db9055bd6a7e7aaa4f36"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:21:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:21:43 2005 +0000"
      },
      "message": "[c99] change gcc zero-length array to C99 flexible array declaration\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* buffer.c: (struct buffer_data) change gcc zero array\n\t  declaration to C99 incomplete array.\n\t* stream.h: (struct stream) same\n\t* ospf_api.c: (struct opaque_lsa) same\n"
    },
    {
      "commit": "c24d602e82d31a2fcbccb4cc3b66f8d0a79d5f22",
      "tree": "55abf96bbb7899029d542b0714e666159484dbb2",
      "parents": [
        "b29800a676b7c3cf00d8a4086b7783ccb7e2f29f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:54:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:54:12 2005 +0000"
      },
      "message": "2005-11-20 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * ospf_abr.c: (ospf_abr_announce_network_to_area) check\n          returned LSA of ospf_summary_lsa_refresh and print warning if\n          it failed.\n          (ospf_abr_announce_network_to_area) similar\n          (ospf_abr_announce_rtr_to_area) similar\n        * ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid.\n          (ospf_router_lsa_originate) similar\n          (ospf_router_lsa_refresh, ospf_network_lsa_new) similar\n          (ospf_summary_lsa_new) Check ID is valid.\n          (ospf_summary_lsa_originate) ditto, and check returned LSA from\n           previous function is !NULL.\n          (ospf_summary_lsa_refresh) check ospf_summary_lsa_new return\n           is !NULL.\n          (ospf_summary_asbr_lsa_new) ID valid check.\n          (ospf_summary_asbr_lsa_originate) similar.\n"
    },
    {
      "commit": "b29800a676b7c3cf00d8a4086b7783ccb7e2f29f",
      "tree": "98afc20c5aae1909e34b1b86f1d6d18f36391c89",
      "parents": [
        "77b1cffe3b71c886152534b8507f00c7fcbd12c9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:50:45 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 14:50:45 2005 +0000"
      },
      "message": "2005-11-20 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * ospfd.h: remove the OSPF_ROUTER_ID_UPDATE_DELAY define\n          (struct ospf) remove the router_id timer thread.\n          remove export of ospf_router_id_update_timer.\n        * ospfd.c: (ospf_router_id_update) call ospf_if_update to\n          poke interfaces into action after ID has been configured.\n          (ospf_router_id_update_timer) removed.\n          (ospf_finish_final) t_router_id_update timer is gone.\n          (ospf_network_run) router-id update timer gone.\n          call ospf_router_id_update directly if ID not configured.\n          In the per-iface loop, don\u0027t ospf_if_up interfaces if\n          ID is still not configured. The update function will call\n          ospf_if_update anyway.\n          (ospf_if_update) ID update timer is gone. Just return if no\n          ID is set.\n        * ospf_vty.c: (ospf_router_id) call ospf_router_id_update, no\n          timer needed.\n        * ospf_zebra.c: (ospf_router_id_update_zebra) call\n          ospf_router_id_update directly, not via timer.\n"
    },
    {
      "commit": "649654aba22704a792949374990bc2a29c357de8",
      "tree": "dea4976f37c2719ccf2d6f01f14f32f2afac792b",
      "parents": [
        "70cd34749f3c57d6f67ab31a9552c46afe437553"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 20:17:52 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 20:17:52 2005 +0000"
      },
      "message": "[ospfd] Standardize buffer sizes used for displaying timers.\n2005-11-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.h: Define OSPF_TIME_DUMP_SIZE as appropriate buffer size\n\t  for use with ospf_timer_dump and ospf_timeval_dump.\n\t* ospf_vty.c: Change all buffer sizes used with ospf_timer_dump and\n\t  ospf_timeval_dump to have size OSPF_TIME_DUMP_SIZE.\n\t  (show_ip_ospf_interface_sub) Fix possible buffer overflow in\n\t  call to ospf_timer_dump.\n"
    },
    {
      "commit": "70cd34749f3c57d6f67ab31a9552c46afe437553",
      "tree": "cbb09a4e97d559ae0806134a94313e7352821741",
      "parents": [
        "889e9311e5c900ce24eecf00fcb5b8b9d51bb020"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 19:33:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Nov 16 19:33:22 2005 +0000"
      },
      "message": "[ospfd] Make OSPF_ISM_TIMER_OFF macro safer.\n2005-11-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_ism.h: (OSPF_ISM_TIMER_OFF) Improve macro syntax by enclosing\n\t  in \u0027do {...} while(0)\u0027.\n"
    },
    {
      "commit": "31a5976bb99f1875ebcfc29a6359f3a7ae81a795",
      "tree": "2c15efa99bd7d150ed505ada900d66258b48bb8a",
      "parents": [
        "6fe70d1b35c189cb1e488b2c26551ba7baac6148"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 11:11:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 11:11:11 2005 +0000"
      },
      "message": "[ospfd] misc small fixes. Fix default stub router setting. no opaque compile.\n\n2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.c: (ospf_new) stub-shutdown should just default to\n\t  unconfigured, too strange otherwise.\n\t  (ospf_finish_final) t_opaque_lsa_self TIMER_OFF should be\n\t  preprocessor conditional on HAVE_OPAQUE_LSA.\n\t* ospfd.h: (struct ospf) remove the SHUTDOWN_DEFAULT define.\n\t  no longer used, plus it wasn\u0027t in range that the command\n\t  accepted.\n\t* ospf_zebra.h: Depends on vty.h, include it.\n"
    },
    {
      "commit": "58e1befe5fbd6eade52a1536acb49ea4b4fc5837",
      "tree": "3851ffdb632c5e8d6ea6e8ed77cee7fb6c21b013",
      "parents": [
        "cb3d31db278a522641f2ec5408034b819091bab6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 12:10:03 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 12:10:03 2005 +0000"
      },
      "message": "[ospfd] SPF ospf_canonical_nexthops_free bugfix.\n"
    },
    {
      "commit": "c8c1521a7d39d165ef856c1a3a6dcd54f0532e8d",
      "tree": "ac069b1dd77be09ea5419169544cbf2107cf89d1",
      "parents": [
        "8570676c4ffb407284d51a80c045d6989b7af6d7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:31:39 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:31:39 2005 +0000"
      },
      "message": "2005-11-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_{dump,spf,vty}.c: Oops, use the internal tv_sub\n\t  function rather than unportable timersub.\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": "88d6cf37f66c3b7d1abdaa20875418192d5219b8",
      "tree": "4843e77f622d3bf9e5df5c75de381e06e3126d6b",
      "parents": [
        "92779fe51dd061ab1502a9acdc0cf5241748e0c7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "message": "2005-10-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) RFC3137 stub-router support\n\t* ospfd.h: Add OSPF_OUTPUT_COST_INFINITE define.\n\t  (struct ospf_master) Add a OSPF_MASTER_SHUTDOWN flag for\n\t  options, to allow shutdown to distinguish between complete\n\t  shutdown and shutdown of a subset of ospf instances.\n\t  (struct ospf)\n\t  Add stub_router_{startup,shutdown_}time, configuration of startup\n\t  and shutdown time for stub-router.\n\t  Add t_graceful_shutdown struct thread, timer for graceful\n\t  shutdown, if needed.\n\t  (struct ospf_area) Add stub_router_state - run time state of\n\t  stub-router for an area. Add flags for ADMIN, IS and WAS\n\t  states.\n\t  Add t_stub_router, timer thread to resend router-lsa for an\n\t  area.\n\t* ospf_lsa.c: (ospf_link_cost) new simple function to spit out\n\t  either the given lnks cost or infinite cost if stub-router is\n\t  in effect.\n\t  (lsa_link_{ptop,broadcast,virtuallink,ptomp}_set) use\n\t  previous function for transit-links.\n\t  (ospf_stub_router_timer) timer thread for end of startup stub\n\t  router. Change state as required for the area and setup\n\t  re-origination of router-lsa.\n\t  (ospf_stub_router_check) Check/do whether stub-router should be\n\t  enabled, and whether it requires timer to be setup.\n\t  (ospf_router_lsa_new) call previous function at top.\n\t  (ospf_router_lsa_originate) no external callers, made static.\n\t* ospf_lsa.h: (ospf_router_lsa_originate) removed.\n\t* ospf_main.c: (sigint) make static.\n\t  remove call to exit, as ospf_terminate now deals with\n\t  exiting.\n\t* ospf_route.c: (ospf_terminate) removed, now in ospfd.c.\n\t* ospf_vty.c: (show_ip_ospf_area) print out state of\n\t  stub-router, if active.\n\t  (show_ip_ospf) print out configuration of stub-router\n\t  support, and details of graceful-shutdown if the timer is\n\t  active.\n\t  ((no)?ospf_max_metric_router_lsa_{admin,startup,shutdown}) new\n\t  commands to (de-)?configure stub-router support.\n\t  (config_write_stub_router) write out config of stub-router.\n\t  (ospf_config_write) call previous.\n\t  (ospf_vty_init) install the new stub-router commands.\n\t* ospfd.c: various functions made static.\n\t  (ospf_new) Set defaults for stub-router. Graceful shutdown\n\t  is made to default on, just to be adventerous.\n\t  (ospf_graceful_shutdown_finish) new function, final part of\n\t  shutdown.\n\t  (ospf_graceful_shutdown_timer) timer thread wrapper for\n\t  graceful-shutdown.\n\t  (ospf_graceful_shutdown_check) check whether to setup timer\n\t  for shutdown or proceed directly to final shutdown.\n\t  (ospf_terminate) moved here from ospf_route.c, call\n\t  ospf_finish for each instance.\n\t  (ospf_finish) renamed to ospf_finish_final and made static.\n\t  (ospf_finish) new function, exported wrapper around\n\t  ospf_graceful_shutdown_check.\n\t  (ospf_finish_final) complete shutdown of an instance.\n\t  Add missing TIMER_OFF\u0027s of two timer threads.\n\t  (ospf_area_free) opaque self lsa timer should be turned off.\n"
    },
    {
      "commit": "e029d448587551be7543e64e278dbb566f57509a",
      "tree": "7ce8c2a0a69634c377c2e0180fecc6ad2cfa6eca",
      "parents": [
        "b8ad39d47a0fea7a336305cfd04f059c8e797aad"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (ospf_apiserver_term) This function should\n\t  not have side-effects (eg segv) if no apiserver instances are\n\t  active, ie be robust.\n"
    },
    {
      "commit": "b8ad39d47a0fea7a336305cfd04f059c8e797aad",
      "tree": "8387ae1ff1f397c79c035b3b303e8ea74b53a451",
      "parents": [
        "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (show_ip_ospf) fix display of SPF timer if it\n\t  has not yet been run.\n"
    },
    {
      "commit": "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66",
      "tree": "e7281a93367a634b7d08fa45c24951dbb0bd444c",
      "parents": [
        "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to\n\t  Andrew Schorr.\n\t* ospf_vty.c: (ospf_config_write) fix write out of spf timers\n\t  configuration.\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": "eb3da6dfa92be8083bbe1b4436818754be158b93",
      "tree": "72067c3eb6ec2f5fd1678d555062424f163c6599",
      "parents": [
        "3623814abc4df8435d2fc50697c6d7fc66f21088"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "message": "2005-10-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF memory management cleanup and fix for rare\n\t  double-free bug.\n\t* ospf_spf.h: (struct vertex_parent) New struct to hold parent\n\t  specific data, eg the backlink and the parent vertex pointer,\n\t  and point to the appropriate general struct vertex_nexthop.\n\t  (struct vertex_nexthop) remove parent vertex pointer, so\n\t  this struct can be shared across vertices.\n\t  (struct vertex) rename list child to list children. Remove\n\t  list of nexthops, replace with list of vertex_parents.\n\t* ospf_spf.c: (update_stat) trivial, remove cast from void *.\n\t  (vertex_nexthop_new) remove init of parent - field is gone\n          from struct vertex_nexthop.\n          (ospf_canonical_nexthops_free) Remove the canonical\n          vertex_nexthop memory objects. These are the vertex_nexthops\n          attached to the first level of router vertices from the root.\n          (vertex_parent_new) new function, create a vertex_parent.\n          (vertex_parent_free) ditto, but free it.\n          (ospf_vertex_new) Update to match changes to struct vertex.\n          (ospf_vertex_free) Recursively free a struct vertex and its\n          children. The parent list is used as a reference count.\n          vertex_nexthops must be free seperately, if required.\n          (ospf_vertex_dump) update to match struct vertex changes.\n          Print out backlink of parents too.\n          (ospf_vertex_add_parent) ditto.\n          (ospf_lsa_has_link) update comment.\n          (ospf_nexthop_add_unique) removed, not needed anymore.\n          (ospf_nexthop_merge) ditto.\n          (ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.\n          Simplified to just create vertex_parent and add it.\n          (ospf_spf_flush_parents) new function, flush out the parent\n\t  list.\n\t  (ospf_nexthop_calculation) Take the relevant route_lsa_link\n\t  as an argument, which simplifies things and removes the need\n\t  for the hack in ospf_nexthop_add_unique - ospf_spf_next\n\t  already knew exactly which link the cost calculated was for.\n\t  Update to match struct vertex changes too.\n\t  (ospf_spf_next) Don\u0027t create a vertex for W unnecessarily, if\n          it\u0027s there\u0027s a vertex already created for W, use it, and\n          hence there\u0027s no need to free it either.\n          Update some manipulation/comparisons of distance to match.\n          Flush the parent list if a lower cost path is found.\n          (ospf_spf_route_free) unused, removed.\n          (ospf_spf_dump) match the struct vertex changes, and dump the\n          ifname if possible.\n          (ospf_spf_calculate) At end of SPF, free the canonical nexthops\n          and call ospf_vertex_free on the root vertex to free the\n\t  entire tree.\n\t* ospf_interface.c: (ospf_vl_set_params) match struct vertex\n          changes.\n        * ospf_route.c: (ospf_intra_route_add) ditto\n          (ospf_route_copy_nexthops_from_vertex) ditto\n\t* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.\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": "77df1f78597af79209777d264ec9986f33a2fd17",
      "tree": "dd1aaf403511242b0cd3277cb0be14eed348a678",
      "parents": [
        "fac3e8410ade65e269aa2d896bcd3a0b68f10d70"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "message": "2005-10-06 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n        * ospf_snmp.c: Avoid mixing interface and ospf_interface objects\n          which now allows snmpwalk to work with ospfIfTable and\n          also with ospfIfMetricTable\n"
    },
    {
      "commit": "f52d13cb2e8e7197934d5f241f88647f9b9d78b8",
      "tree": "b0aa01befc07f57ed47e83ac7dfb383284c49d26",
      "parents": [
        "c05612b9a702d0f49c379c92deb6daab55372aea"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Declare new functions zebra_route_string() and\n\t  zebra_route_char().\n\t* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New\n\t  functions to map zebra route numbers to strings.\n\t* zebra_vty.c: (route_type_str) Remove obsolete function: use new\n\t  library function zebra_route_string() instead.  Note that there\n\t  are a few differences: for IPv6 routes, we now get \"ripng\" and\n\t  \"ospf6\" instead of the old behavior (\"rip\" and \"ospf\").\n\t  (route_type_char) Remove obsolete function: ues new library function\n\t  zebra_route_char() instead.  Note that there is one difference:\n\t  the old function returned \u0027S\u0027 for a ZEBRA_ROUTE_SYSTEM route,\n\t  whereas the new one returns \u0027X\u0027.\n\t  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace\n\t  route_type_str() with zebra_route_string().\n\t  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()\n\t  with zebra_route_char().\n\t* bgp_vty.c: (bgp_config_write_redistribute) Use new library function\n\t  zebra_route_string instead of a local hard-coded table.\n\t* ospf6_asbr.c: Remove local hard-coded tables zroute_name and\n\t  zroute_abname. Change the ZROUTE_NAME macro to use new library\n\t  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.\n\t  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with\n\t  a call to zebra_route_char(), and be sure to fix the format string,\n\t  since we now have a char instead of a char *.\n\t* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and\n\t  zebra_route_abname.  Note that the zebra_route_name[] table\n\t  contained mixed-case strings, whereas the zebra_route_string()\n\t  function returns lower-case strings.\n\t  (ospf6_zebra_read_ipv6): Change debug message to use new library\n\t  function zebra_route_string() instead of zebra_route_name[].\n\t  (show_zebra): Use new library function zebra_route_string() instead\n\t  of zebra_route_name[].\n\t* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.\n\t  (ospf_redist_string) New function implemented using new library\n\t  function zebra_route_string().  Note that there are a few differences\n\t  in the output that will result: the new function returns strings\n\t  that are lower-case, whereas the old table was mixed case.  Also,\n\t  the old table mapped ZEBRA_ROUTE_OSPF6 to \"OSPFv3\", whereas the\n\t  new function returns \"ospf6\".\n\t* ospfd.h: Remove extern struct message ospf_redistributed_proto[],\n\t  and add extern const char *ospf_redist_string(u_int route_type)\n\t  instead.\n\t* ospf_asbr.c: (ospf_external_info_add) In two messages, use\n\t  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).\n\t* ospf_vty.c: Remove local hard-coded table distribute_str.\n\t  (config_write_ospf_redistribute,config_write_ospf_distribute): Use\n\t  new library function zebra_route_string() instead of distribute_str[].\n\t* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,\n\t  ospf_redistribute_default_set,ospf_redistribute_check)\n\t  In debug messages, use ospf_redist_string() instead of\n\t  LOOKUP(ospf_redistributed_proto).\n\t* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded\n\t  table str[]. Replace str[] with calls to new library function\n\t  zebra_route_string().\n\t* ripd.c: Remove local hard-coded table route_info[].\n\t  (show_ip_rip) Replace uses of str[] with calls to new library\n\t  functions zebra_route_char and zebra_route_string.\n\t* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded\n\t  table str[].  Replace str[i] with new library function\n\t  zebra_route_string(i).\n\t* ripngd.c: Remove local hard-coded table route_info[].\n\t  (show_ipv6_ripng) Use new library function zebra_route_char() instead\n\t  of table route_info[].\n"
    },
    {
      "commit": "6638c1ab3d4c0043a49a3a67768cccf4a23648dc",
      "tree": "8fd2f7cdf8f787b495109c36ecf87d411ddee860",
      "parents": [
        "2d74db55c463231e3542207bc3d940e2563e6b5b"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:\n\t  remove unused DEBUG\n"
    },
    {
      "commit": "5e4914c31ead7b99eeed73067451367336b21422",
      "tree": "f2c49d5c8182d4ee1b8ad8ca5005fe1223da18c8",
      "parents": [
        "ceacedba227e77156f92f7676b274c48a2817e8f"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/smux.[ch]: allow to retreive global OID (identified by \u003c0\n      namelen).\n    * ospf_ism.c: generate SNMP traps on Interface state change\n    * ospf_nsm.c: generate SNMP traps on Neighbour state change\n    * ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.\n"
    },
    {
      "commit": "ceacedba227e77156f92f7676b274c48a2817e8f",
      "tree": "f362ecc8f6f183347ebe45ab79727b54d2f527a6",
      "parents": [
        "e62178797d0ee5f326fd587b84ee965cf88833e4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 29 14:39:32 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 29 14:39:32 2005 +0000"
      },
      "message": "2005-09-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Add the test for Solaris least-privileges. Set\n\t  defines for whether capabilities are supported and whether of\n\t  the linux or solaris variety.\n\t  Add missing-prototypes, missing-declarations, char-subscripts\n\t  and cast-qual warnings to default cflags, cause Hasso enjoys warnings,\n\t  and we really should clean the remaining ones up. (ie isisd..).\n\t* (*/*main.c) Update the zebra_capabilities_t arrays in the various\n\t  daemons to match the changes made in lib/privs.h.\n\t* zebra.h: Solaris capabilities requires priv.h to be included.\n\t* privs.{c,h}: Add support for Solaris Least-Privileges.\n\t  privs.h: Reduce some of the abstract capabilities, which do\n\t  not have rough equivalents on both systems. Rename the net\n\t  related caps to _NET, as they should have been in first\n\t  place.\n\t  (zprivs_terminate) should take the zebra_privs_t as argument so\n\t  that it can update change pointer.\n\t  Add an additional privilege state, ZPRIVS_UNKNOWN.\n\t* privs.c: (various capability functions) Add\n\t  Solaris privileges variants.\n\t  (zprivs_state) Use privs.c specific generic types to\n          represent various capability/privilege related types, so that\n          each can be typedef\u0027d as appropriate on each platform.\n\t  (zprivs_null_state) static added, to hold the state the null\n\t  method should report (should be raised by default, and\n          LOWERED if zprivs_terminate has been called)\n          (zprivs_state_null) Report back the zprivs_null_state.\n          (cap_map) Make it able to map abstract capability to multiple\n          system capabilities.\n          (zcaps2sys) Map to abstract capabilities to multiple system\n          privileges/capabilities.\n          (zprivs_init) move capability related init to seperate\n\t  function, zprivs_caps_init.\n          (zprivs_terminate) ditto, moved to zprivs_caps_terminate.\n          Set the change_state callback to the NULL state, so the\n          user can continue to run and use the callbacks.\n"
    },
    {
      "commit": "e62178797d0ee5f326fd587b84ee965cf88833e4",
      "tree": "a9a79699e89f806e84bbf6b39f664c5fc044f546",
      "parents": [
        "ba682537715c42ab3976790baea5cda86c5b1589"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:56:14 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:56:14 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n   * Of course ISM_SNMP MACRO mist be defined\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": "5339cfdb7c3f6187452982173aa55ff525d1f6fe",
      "tree": "e7cd744e116040c7bc5f2823f8b73ea9e1316d7e",
      "parents": [
        "f06834b80504497824ce50b533ba4fedb6abf2c7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Sep 19 13:28:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Sep 19 13:28:05 2005 +0000"
      },
      "message": "2005-09-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_lsa.h: (ospf_external_lsa_flush) Comment out the 5th argument\n\t  (nexthop) since it is not used in the function (except inside\n\t  some commented-out code).\n\t* ospf_lsa.c: (ospf_external_lsa_flush,ospf_external_lsa_refresh)\n\t  Comment out the 5th argument to ospf_external_lsa_flush.\n\t* ospf_asbr.c: (ospf_redistribute_withdraw) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n\t* ospf_vty.c: (no_ospf_default_information_originate) Eliminate 5th\n\t  uninitialized nexthop arg to ospf_external_lsa_flush.\n\t* ospf_zebra.c: (ospf_zebra_read_ipv4) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n\t* ospfd.c: (ospf_network_set) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n"
    },
    {
      "commit": "e6a0bf9ca05b5543d0d21045ce939598c4e79887",
      "tree": "9ca8e935ef9884e22afd3e046242e334917ff24a",
      "parents": [
        "a96d8d1095da09811e343a534f5801a948ae1061"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Sep 17 18:53:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Sep 17 18:53:38 2005 +0000"
      },
      "message": "2005-09-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_opaque.c:\n\t  (ospf_opaque_lsa_refresh_schedule,ospf_opaque_lsa_flush_schedule)\n\t  No need to call ospf_lookup(), just use lsa0-\u003earea-\u003eospf instead.\n"
    },
    {
      "commit": "bb5b7552cc4f067fbb25f7a8f0c4fe558a508f3f",
      "tree": "67adaa204f37ea8c57ef8b0c893ed1e21b7d52bb",
      "parents": [
        "54bedb55d9f4185e35307a4178ad8d73a9a8857d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 21 20:01:15 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 21 20:01:15 2005 +0000"
      },
      "message": "\t* ospf_vty.c: Make \"show ip ospf neighbor xxx\" commands work.\n\t  Interface should be specified by name now.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "54bedb55d9f4185e35307a4178ad8d73a9a8857d",
      "tree": "9cccbd6d9ed8d0e612a76817ced6cd24dbb8e2a0",
      "parents": [
        "56b24f4c33d2dc093922945319da02c7cbdadd2b"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 17 13:31:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 17 13:31:47 2005 +0000"
      },
      "message": "\t* ospf_vty.c: Check carefully if interface exists before trying to\n\t  print info about it.\n\n\tFixes bugzilla #213. [backport candidate]\n"
    },
    {
      "commit": "01018ce479cce0af61d3797e5200cc340fe6ec0e",
      "tree": "0d497a18a8848231be1e4a9806394769bf855525",
      "parents": [
        "e279c7a6f35a211453ec52fdd16ab78535f5d727"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Aug 05 07:40:15 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Aug 05 07:40:15 2005 +0000"
      },
      "message": "\t* ospf_zebra.c: Don\u0027t assert/stop before type \u003d\u003d ZEBRA_ROUTE_MAX if\n\t  dealing with routemaps. There is ospf-\u003eroute_map[ZEBRA_ROUTE_MAX]\n\t  for default-information.\n\n\tFixes bugzilla #208.\n\t[backport candidate]\n"
    },
    {
      "commit": "c898775c95a2aad505911eccb6a70a12d4e49f1d",
      "tree": "ebfcfb61d9ae79ee135e2900580575852b806a86",
      "parents": [
        "d57834f6e5f060924b92b9544070ecf5f145848a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 26 06:07:22 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 26 06:07:22 2005 +0000"
      },
      "message": "2005-07-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_announce_network_to_area) SET_FLAG\n\t  should be on lsa not old, which may be freed for one thing,\n\t  obviously.\n"
    },
    {
      "commit": "d57834f6e5f060924b92b9544070ecf5f145848a",
      "tree": "25f7312efa2f711b2ebf1b17521e0aea9d83c10f",
      "parents": [
        "e37821068873e4256a5d44d6c81babe39befc8e7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 12 20:04:22 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 12 20:04:22 2005 +0000"
      },
      "message": "2005-07-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.h: add OSPF_ABR_DEFAULT for convenience, make\n\t  OSPF_ABR_CISCO be the default ABR type.\n\t* ospfd.c: (ospf_new) initialise abr_type to OSPF_ABR_DEFAULT\n\t* ospf_vty.c: (no_ospf_abr_type_cmd) add standard as a negatable\n\t  abr_type. default abr_type should be OSPF_ABR_DEFAULT.\n\t  (ospf_config_write) test whether default abr_type against\n\t  OSPF_ABR_DEFAULT, rather than any specific ABR_TYPE.\n"
    },
    {
      "commit": "8469bd7552843333f299e0607f0a2efb7ca056f6",
      "tree": "82c509d502790f590e1920e1da61a94b0c13067c",
      "parents": [
        "f4833e9f47c0f2f4f5b9a4c020f751055cdd1e20"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Jun 20 20:50:10 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Jun 20 20:50:10 2005 +0000"
      },
      "message": "Fix date.\n"
    },
    {
      "commit": "f4833e9f47c0f2f4f5b9a4c020f751055cdd1e20",
      "tree": "a91a6d303407dc3fddcb47530ffb38d644499d48",
      "parents": [
        "354f3b66355f7b658d4cc5e8681c80326af13ee7"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Jun 20 20:42:26 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Jun 20 20:42:26 2005 +0000"
      },
      "message": "\t* ospf_nsm.c: Make database exchange for NSSA database work.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "7461d4594aad716f24690c68c5f82bd865cf9c25",
      "tree": "9a65d1ec29bf635122177b87caa86115d9028d78",
      "parents": [
        "1ada81981da3e6422a59d3052d32696fc93cdea1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jun 13 13:57:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jun 13 13:57:16 2005 +0000"
      },
      "message": "2005-06-13 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_spf.c: Try get more information on a SEGV under\n\t  ospf_spf_vertex_add_parent.\n\t  (ospf_vertex_free) NULL out the child and nexthop lists\n\t  (ospf_vertex_add_parent) nexthop and child can not be NULL\n\t  vertex_nexthop\u0027s parent-\u003echild list can not be NULL\n\t  (ospf_spf_next) w and cw are per-loop iteration variables, move\n\t  declarations into loop body.\n"
    },
    {
      "commit": "1ddd729e6f20b93a635caece8c34ee1b7021fe26",
      "tree": "e9bbe394bf37b142a6febb4b3097074a371764a6",
      "parents": [
        "f69bd9da8b1f7e0f297d4ffb370552fc41af3c81"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jun 07 19:54:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Jun 07 19:54:04 2005 +0000"
      },
      "message": "\t* ospf_apiserver.c: Fix obvious error in notifying clients about ISM\n\t  changes - oi-\u003eifp-\u003estatus doesn\u0027t give to us info about ISM,\n\t  oi-\u003estate does.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "7e440869b51dde1da44f6ffc26643838a1e2b36d",
      "tree": "7d6f74f4b4be26f7bedc02faed6b410d16599a58",
      "parents": [
        "200df115ea0ba6f54151d60fe5e9a7f6948de7c3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:20:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jun 01 11:20:51 2005 +0000"
      },
      "message": "2005-06-01  Akihiro Mizutani  \u003cmizutani@net-chef.net\u003e\n\n\t* ospf_ism.c (ospf_elect_bdr/ospf_elect_dr): Fix DR election bug.\n"
    },
    {
      "commit": "500e418921b0a2141e182a346f8d32864516236d",
      "tree": "e5a67868972b4807506c8fd1a721347f4bdb8c89",
      "parents": [
        "e7fe02fd717a4c62373f3c46a4439e28b43c7dab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 26 17:11:13 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 26 17:11:13 2005 +0000"
      },
      "message": "2005-05-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_update_aggregate) Fix comment, cost bug itself\n\t  had been fixed long ago by Sowmini.\n"
    },
    {
      "commit": "a3387a4488c35d322d3c78973c967b2be5967b6e",
      "tree": "678da23a64c1bb41c2c6c87b362f62f9db22de03",
      "parents": [
        "024a7f06979b467299a85e915b78af456a89e3a6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 18 23:29:57 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed May 18 23:29:57 2005 +0000"
      },
      "message": "2005-05-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_interface.c: (ospf_if_table_lookup) Fix a serious bug\n\t  a less serious one.\n\t  1: this function is supposed to lookup\n\t  entries in the oifs ospf_interface route_table and return either\n\t  an existing oi or NULL to indicate not found, its caller depends\n\t  on this, yet this function uses route_node_get which /always/\n\t  returns a route_node - one is created if none exists. Use\n\t  route_node_lookup instead. This should fix root cause of the\n\t  reports of the (ospf_add_to_if) assert being hit.\n\t  2: oi\u0027s are inserted into this table with prefixlength set to\n\t  /32 (indeed, it should be a hash table, not a route_table),\n\t  however prefixlength to lookup was not changed, if no valid entry\n\t  can be inserted other than /32, then nothng but /32 should be\n\t  looked up. This possibly only worked by fluke..\n\t  Fix confirmed by 2 reporters (one list, one IRC), definitely a\n\t  backport candidate once it has been incubated in HEAD for a while.\n\t  Thanks to Patrick Friedel and Ivan Warren for testing.\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": "42c981994adcf7fb2e1c2bea170cc5f196d5a1d7",
      "tree": "ba2bae75f527d0a034cb42ee3177db9f47802fda",
      "parents": [
        "4dadc291e56195886fd047690ded9686f4e013fa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 07 02:22:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat May 07 02:22:51 2005 +0000"
      },
      "message": "2005-05-07 Yar Tikhiy \u003cyar@comp.chem.msu.su\u003e\n\n\t* configure.ac: Check for OSes which support passing ifindex in\n\t  struct ip_mreq.\n\t* lib/sockopt.c: Add support for BSD style ifindex in ip_mreq.\n\t* ospfd/ospf_network.c: Log ifindex on multicast membership leave/join\n\t  events.\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": "9e67dc2723e86956dade42f5846d5c05334af041",
      "tree": "7a30e01bc773a588112b3039ff150bfe42292b34",
      "parents": [
        "2fd2fd5d4c0e5a67f1b84abe18b54417237b20ab"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 12:10:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 15 12:10:17 2005 +0000"
      },
      "message": "2005-04-15 Zhipeng Gong \u003czpgong@cdc.3upsystems.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_announce_network_to_area) dont forget\n\t  to approve LSAs for the case where metric has changed, lsa gets\n\t  flushed otherwise. (backport candidate).\n"
    },
    {
      "commit": "634f9ea20fce82c94407cb677b5487b65bde1973",
      "tree": "32db82e4ae3b0f409d6d06a0fda401f9d5df5cc9",
      "parents": [
        "dfb9a545f8e3500e6a99518193872f526c1f56ba"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 15:51:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Apr 11 15:51:40 2005 +0000"
      },
      "message": "2005-04-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tImplement non-blocking zclient I/O with buffering.\n\t* zclient.h (struct zclient): Add two fields to support non-blocking\n\t  I/O: struct buffer *wb, and struct thread *t_write.\n\t  (zclient_free): Remove function.\n\t  (zebra_redistribute_send): Change 2nd arg from socket fd to\n\t  struct zclient * (needed to support non-blocking I/O and buffering).\n\t  (zclient_send_message): New function to send an arbitrary\n\t  message with non-blocking I/O.\n\t* zclient.c (zclient_new): Create write buffer.\n\t  (zclient_free): Remove unused function.\n\t  (zclient_stop): Must cancel new t_write thread.  Also, reset\n\t  all buffers: ibuf, obuf, and wb.\n\t  (zclient_failed): New helper function for typical error handling.\n\t  (zclient_flush_data): New thread to flush queued data.\n\t  (zclient_send_message): New function to send the message in\n\t  zclient-\u003eobuf to zebra using non-blocking I/O and buffering.\n\t  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use\n\t  new zclient_send_message function instead of calling writen.\n\t  (zclient_start): Set socket non-blocking.  Also, change 2nd arg\n\t  to zebra_redistribute_send from zclient-\u003esock to zclient.\n\t  (zebra_redistribute_send): Change 2nd arg to struct zclient *.\n\t  Can now use zclient-\u003eobuf to assemble the message instead of\n\t  allocating a temporary stream.  And call zclient_send_message to\n\t  send the message instead of writen.\n\t  (zclient_read): Convert to support non-blocking I/O by using\n\t  stream_read_try instead of deprecated stream_read.\n\t  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send\n\t  from zclient-\u003esock to zclient.\n\t* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):\n\t  Change 2nd arg to zebra_redistribute_send from zclient-\u003esock\n\t  to zclient.\n\t* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead\n\t  of writen.\n\t* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,\n\t  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send\n\t  from zclient-\u003esock to zclient.\n\t* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):\n\t  Change 2nd arg to zebra_redistribute_send from zclient-\u003esock\n\t  to zclient.\n\t* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):\n\t  The 2nd arg to zebra_redistribute_send is now zclient instead of\n\t  zclient-\u003esock.\n\t* isis_zebra.h (isis_zebra_finish): Remove declaration of unused\n\t  function.\n\t* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message\n\t  to send the message to zebra instead of calling writen directly, since\n\t  zclient_send_message understands non-blocking I/O and will manage\n\t  the buffer queue appropriately.\n\t  (isis_zebra_finish): Remove unused function, particularly since\n\t  the zclient_free function has been removed.\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": "e4319de388b748ba66551f33fecdf7446e754b80",
      "tree": "d6ae690186b58ed048ed0a11911c6f1e2d71cd16",
      "parents": [
        "21fefa9843f6e8fc2263e8d85cf0d072b4b6c242"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:23:55 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:23:55 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: (ospf_if_lookup_by_name) Remove declaration of a\n\t  function that does not exist.\n\t* ospf6_interface.[ch]: (ospf6_interface_lookup_by_name) Remove unused\n\t  function.\n"
    },
    {
      "commit": "21fefa9843f6e8fc2263e8d85cf0d072b4b6c242",
      "tree": "8e9116d9d3de3776bc3cf5e9c13d0b4b6086c68d",
      "parents": [
        "bd88bf499a02e3364b06ad269bd7009a0227f91b"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:16:41 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 23:16:41 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_zebra.c: (zebra_interface_if_lookup) Must use\n\t  if_lookup_by_name_len.\n"
    },
    {
      "commit": "a349198fd3e4e5692cdc91223f8153cb53c086ce",
      "tree": "e5b366a8ab7ab9ed1c9670faf1f18eef26877ade",
      "parents": [
        "f695b01ff8e9aebc46bdf41f104ad4abbb0ef59e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t  (if_get_by_name) Tighten up code.\n\t  (interface) Use new function if_get_by_name_len.\n\t* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len\n\t  function.\n\t  (zebra_interface_state_read) Use new if_lookup_by_name_len function.\n\t* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function\n\t  to save a memcpy.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new\n\t  if_get_by_name_len function.\n\t* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.\n"
    },
    {
      "commit": "d2fc88962a9a494ecb34167871bb9e7273a25d33",
      "tree": "304a1c1a744972bc10b1f677a134907c404b361d",
      "parents": [
        "386e61502d391adb985ac1487825349ec85e6a8c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tFix problems when netlink interfaces are renamed (same ifindex used\n\tfor a new interface).  Start cleaning up some problems with the way\n\tinterface names are handled.\n\t* interface.c: (if_new_intern_ifindex) Remove obsolete function.\n\t  (if_delete_update) After distributing the interface deletion message,\n\t  set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (if_dump_vty) Detect pseudo interface by checking if ifp-\u003eifindex is\n\t  IFINDEX_INTERNAL.\n\t  (zebra_interface) Check return code from interface_cmd.func.\n\t  Do not set internal ifindex values to if_new_intern_ifindex(),\n\t  since we now use IFINDEX_INTERNAL for all pseudo interfaces.\n\t* kernel_socket.c: (ifm_read) Fix code and comments to reflect that\n\t  all internal interfaces now have ifp-\u003eifindex set to IFINDEX_INTERNAL.\n        * rt_netlink.c: (set_ifindex) New function used to update ifp-\u003eifindex.\n\t  Detects interface rename events by checking if that ifindex is already\n\t  being used.  If it is, delete the old interface before assigning\n\t  the ifindex to the new interface.\n\t  (netlink_interface, netlink_link_change) Call set_ifindex to update\n\t  the ifindex.\n\t* if.h: Remove define for IFINDEX_INTERNBASE and add define\n\t  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-\n\t  interfaces should have ifindex set to 0.\n\t  (if_new) Remove function.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (ifname2ifindex) New function.\n\t* if.c: (if_new) Remove function (absorb into if_create).\n\t  (if_create) Replace function if_new with call to calloc.\n\t  Set ifp-\u003eifindex to IFINDEX_INTERNAL.  Fix off-by-one error\n\t  in assert to check length of interface name.  Add error message\n\t  if interface with this name already exists.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (if_delete) Implement with help of if_delete_retain.\n\t  (ifindex2ifname) Reimplement using if_lookup_by_index.\n\t  (ifname2ifindex) New function to complement ifindex2ifname.\n\t  (interface) The interface command should check the name length\n\t  and fail with a warning message if it is too long.\n\t  (no_interface) Fix spelling in warning message.\n\t  (if_nametoindex) Reimplement using if_lookup_by_name.\n\t  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using\n\t  if_lookup_by_index.\n\t* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead\n\t  of if_delete, since it is generally not safe to remove interface\n\t  structures.  After deleting, set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Tighten up code.\n\t* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function\n\t  was commented out.  But this is not safe: we should at least update\n\t  the ifindex when the interface is deleted.  So the new version\n\t  updates the interface status and sets ifp-\u003eifindex to\n\t  IFINDEX_INTERNAL.\n\t  (ospf6_zebra_route_update) Use if_indextoname properly.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface\n\t  flags to help with debugging.\n\t* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Make function static.  Tighten up code.\n\t* rip_interface.c: (rip_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t* ripng_interface.c: (ripng_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n"
    },
    {
      "commit": "aca72fda8f251c866f88becd5bec4c215104b102",
      "tree": "cbc00dabb129e1a85079e1446ce9c721ec00817c",
      "parents": [
        "2da40f4919f6268d4935c42a358739ffdf3a48dc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "message": "2005-03-31 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging\n\t  is turned on.\n\n\t  [backport candidate]\n"
    },
    {
      "commit": "a608bbf27b48b7bd5e63f1c46380a1c5288ba48a",
      "tree": "5317bf773d9a90337fa9cef8ca24127f127dc2bc",
      "parents": [
        "5dcbdf82efdf65313a04ea45f2c8f7307c7ab671"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 17:03:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 17:03:49 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* rt_netlink.c: (netlink_link_change) If the status of an\n\t  operative interface changes (e.g. MTU changes), the client\n\t  daemons should be notified by calling zebra_interface_up_update.\n\t  Previously, the information was being updated in zebra\u0027s\n\t  interface structure, but the clients were not notified of\n\t  changes to an operative interface.\n\t* ospf_zebra.c: (ospf_interface_state_up) If the MTU of an operative\n\t  interface changes, print a debug message and call ospf_if_reset()\n\t  to simulate down/up on the interface.\n\t* ospf_interface.h: Declare new function ospf_if_reset().\n\t* ospf_interface.c: (ospf_if_reset) New function to call ospf_if_down\n\t  and ospf_if_up for all ospf interfaces attached to an interface.\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": "fd651fa6d5139501af57471109ec15bb688e4bd4",
      "tree": "25667e4dbf86dd641e291c86e83a2d106482a3d6",
      "parents": [
        "7f22396bdc304c14f1c7ef0402ba9bd1450661b7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:08:16 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:08:16 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c (show_ip_ospf_interface_sub): Display interface MTU and\n\tbandwidth; this is useful for debugging problems.  Also, the function\n\tshould be static.\n"
    },
    {
      "commit": "2d58228ecabb23b064e8a06e6241cf0d7e5ca785",
      "tree": "443509e8113598c7dadaa5e9cdbb153c147d0ffe",
      "parents": [
        "17eff7cb9010c0ba386ab801c220811ded4242b3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:29:07 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:29:07 2005 +0000"
      },
      "message": "\t* configure.ac, */Makefile.am: Fix previous commit. SNMP includes\n\t  must be after lib/ includes in some systems. Introduce SNMP_INCLUDES\n\t  for that.\n"
    },
    {
      "commit": "1b63904721aa6ca1aabafe23bcf28c5a2ceb2cd8",
      "tree": "9a13bfd8caeb9c92f79ec1ecc3666c66da24a2a8",
      "parents": [
        "1969e4b9631288979f5f7df6dcaddb86ab32950e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:32:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:32:25 2005 +0000"
      },
      "message": "\t* ospf_snmp.c: Don\u0027t crash in snmp query if ospf instance doesn\u0027t\n\t  exist at all.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "343f5cc76922c8c741a47d1ae9646fcf263d32d7",
      "tree": "dd82bdb7e7ab441fcbf66d27ea10bc4007857012",
      "parents": [
        "7cee1bb15089e4e994958651bd45a6f81c4215aa"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "message": "\t* ospfd.h: Include log.h, fixes compile with gcc-4.0.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "9dbc797274ca5df614d61784658b8f809bbd8e2b",
      "tree": "97aa0b8f724e440a6bb12bc70b31c66b425b2a46",
      "parents": [
        "ed9bb6d524301cb7d1902ed94753ffa3c6dabf1e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Mar 13 19:27:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Mar 13 19:27:22 2005 +0000"
      },
      "message": "2005-03-13 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_refresh_walker) If the system clock jumps\n\t  backward, then current time may be less than\n\t  ospf-\u003elsa_refresher_started.  This was causing invalid values\n\t  for ospf-\u003elsa_refresh_queue.index resulting in infinite loops.\n\t  Problem fixed by casting the expression to unsigned before taking\n\t  the modulus.\n\n\t[backport candidate]\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": "462f20d50c8f86c26904f1c7316d910c2b83ae41",
      "tree": "3edbff28c76bdb8e1c66ea5153b1cb58d40f15aa",
      "parents": [
        "c3c07f28dcd226975b5ed0c1f8842f51968a3288"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "message": "\t* ospf_lsa.h: New flag to the LSA structure for the SPF calculation.\n\t* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.\n\t* ospf_spf.h: Add link to the LSA stat structure into vertex.\n\t* ospf_spf.c: New functions cmp() and update_stat() to manage\n\t  candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),\n\t  ospf_install_candidate() and ospf_spf_register() functions not needed\n\t  any more. Update ospf_vertex_new(), ospf_spf_next() and\n\t  ospf_spf_calculate() functions to use pqueue instead of linked list.\n"
    },
    {
      "commit": "e40dcce1f5966d4129b5ecadd905dc2952ac5b30",
      "tree": "e47b30c1f3ff4d0ddf36f2f3e97a7e7c22dbb3a8",
      "parents": [
        "e8274dcde1bd0f0339393714d57c019e57a5b798"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 14:58:42 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 14:58:42 2005 +0000"
      },
      "message": "\t* ospf_ase.c: Don\u0027t show messages related to the ase calculations if\n\t  we are not debugging.\n"
    },
    {
      "commit": "306541b31624a344db085bfee45e5d9343fc8dca",
      "tree": "1f57f3f14b7463596acb95728a4185aa72899133",
      "parents": [
        "c45eb839ae2aac88372180fda8ce90dc1abefe2f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 17:58:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 17:58:40 2005 +0000"
      },
      "message": "\t* ospf_api.h: char isn\u0027t always signed, but it has to be it here.\n\n\tFixes bugzilla #153. [backport candidate]\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": "082253f5d08577e2c7b61ed2302be88295b459eb",
      "tree": "4a359027a29c673844f89bd36e706baaa5326db4",
      "parents": [
        "5d6191ee84cc4b292f19f287a5c4fc45f7dd9b84"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Feb 11 08:31:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Feb 11 08:31:54 2005 +0000"
      },
      "message": "\t* ospf_lsdb.c: Fix sum of checksums calculation.\n\n\t[backport candidate]\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": "8cfde37647b40640667ffb38c32b575da1476586",
      "tree": "c62e41ee92ce48b0887047f1028138953b480862",
      "parents": [
        "548e6f7d58a08e28132936431bba75428412857f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:59:16 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:59:16 2005 +0000"
      },
      "message": "2005-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"
    },
    {
      "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": "0b7d97d293af645d98bc9b196b228d674b2aa344",
      "tree": "ecbd51182fed5647180671b9f2b9cd12f841b54b",
      "parents": [
        "3b8b1855038afde448993e5a56955e9b7a4d99c2"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 17:24:02 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Jan 30 17:24:02 2005 +0000"
      },
      "message": "2005-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"
    },
    {
      "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": "3dc56b5bd3fa2aacc427505feaa9cd1366e7ebe8",
      "tree": "a1c9855ec0d2a918f31c444c3d0d4228fedb0f50",
      "parents": [
        "cc49eb5a5f970b7405762d3f8a2def179e0022b4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Dec 30 15:11:19 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Dec 30 15:11:19 2004 +0000"
      },
      "message": "2004-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"
    },
    {
      "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": "fe71a97da23e2282bc92f647227d5c97c73e3bc8",
      "tree": "d812d9a1b98b0a1e9c1621194bf58dba097d6e3b",
      "parents": [
        "16f6511e94c3765725b196aacaf6053385bca8a3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 16:16:02 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 16:16:02 2004 +0000"
      },
      "message": "Show sums of checksums in \"show ip ospf\" output. Okayed by Paul and James\nR. Leu (author of original idea).\n"
    },
    {
      "commit": "c6b878195752f25e3c943184d2baa11f2b14f53a",
      "tree": "2bf618c4c9bce1c8d71ce178754baee3e7fc15c6",
      "parents": [
        "dfbb91241850117729f9ebcc37207260dc50146b"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 13:09:59 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 13:09:59 2004 +0000"
      },
      "message": "Fix \"show ip ospf\" output. If router is configured as \"translate-never\", we\nsay so - we can never be translator.\n"
    },
    {
      "commit": "1d8062884fb47475c91fdcade912281ef0ac81b3",
      "tree": "0b8b674445255f5c22091dcfdbcbde85f20c1cef",
      "parents": [
        "9a30ee5606fce86ac266839dccb1169af6e73d08"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 09:43:20 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Dec 22 09:43:20 2004 +0000"
      },
      "message": "Show debug configuration in vtysh.\n"
    },
    {
      "commit": "bc18d616ad7d1d580e1e04c28eab2cd9afb67fad",
      "tree": "2177945097bf719604b066c35724b55606ad7eae",
      "parents": [
        "766a0ca3dcb824fc9283be89bb57e47132b26826"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 15:07:19 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 15 15:07:19 2004 +0000"
      },
      "message": "2004-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"
    },
    {
      "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": "3fb9de74bbd3de3a264c20b1b486f9853f908c79",
      "tree": "ff02a6c1259d49646c2e12efe4975503926902e4",
      "parents": [
        "09c3adb9e9f41d4698025e3a70cfa71e54e003e4"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 09 16:30:04 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 09 16:30:04 2004 +0000"
      },
      "message": "       * ospf_apiserver.c (ospf_apiserver_term): Obtain struct\n        ospf_apiserver * from listnode.  Remove unused variables.  Follows\n        suggestion from Jay Fenlason.\n"
    }
  ],
  "next": "91f3e525a95d6a86f916872116af162eb3bdae5d"
}
