)]}'
{
  "log": [
    {
      "commit": "0ed3192835bdf53c5b3b90541735131e9ed56602",
      "tree": "0b7533f6a8dd4a65bd0005fe251b9e684ab61cea",
      "parents": [
        "ec1a428343cad343969d569c56acbe6b02ab8f4f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 25 20:23:46 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 25 20:23:46 2005 +0000"
      },
      "message": "2005-11-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* texinfo.tex: update to newer version, seems to now properly\n\t  scale the diagramme images in PDF output.\n"
    },
    {
      "commit": "ec1a428343cad343969d569c56acbe6b02ab8f4f",
      "tree": "ed693dcea011eccbef34113da3e340ec1290e7b3",
      "parents": [
        "b6026073584b855d47a8e2033d2aa3413a3394e9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 15:15:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 15:15:17 2005 +0000"
      },
      "message": "[zebra] Fix mistake in previous commit and further compile warnings/errors.\n\n2005-11-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.h: New header for functions exported to sysctl\n\t  methods.\n\t* kernel_socket.c: include previous.\n\t  Remove static qualifier from couple of functions which are\n\t  used by sysctl methods, incorrectly added in previous commit.\n\t  Add a workaround for a bogus gcc warning to the RTA_ macros.\n\t* Makefile.am: Add kernel_socket.h to noinst_HEADERS\n\t* if_sysctl.c: include rt.h and kernel_socket.h and remove\n\t  redundant prototypes.\n\t* rtread_sysctl.c: ditto.\n\t  (route_read) fix mismatch of return values.\n\t* {rt,zserv,rib}.h: Include lib headers depended on.\n"
    },
    {
      "commit": "b6026073584b855d47a8e2033d2aa3413a3394e9",
      "tree": "acc8812673bc85302da33007549e7828e2a23877",
      "parents": [
        "6e0f1b940dc281863ef9d9f3bd57676927b8603f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:51:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:51:24 2005 +0000"
      },
      "message": "[lib/zebra.h] fix Linux compile error\n\n2005-11-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra.h: s/u_int/unsigned int/, u_int is a BSD type, defining\n\t  __USE_BSD on Linux pulls in further things from netinet/ip.h\n\t  which dont preprocess for some reason. There is no C99\n\t  shorthand type directly equivalent to u_int afaict, so don\u0027t\n\t  use it.\n"
    },
    {
      "commit": "6e0f1b940dc281863ef9d9f3bd57676927b8603f",
      "tree": "d6b5bdc6518a4ca4ac8c9d6df0ffd4bab21b369b",
      "parents": [
        "a0ace1e8f2331f497ccea3d840a4051f75341fdf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:47:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:47:17 2005 +0000"
      },
      "message": "[privs/solaris] Fix unused variable and incorrect format string.\n\n2005-11-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* privs.c: (zcaps2sys/solaris) remove unused variable.\n\t  (zprivs_state_caps/solaris) Format string missing a\n\t  specifier.\n"
    },
    {
      "commit": "a0ace1e8f2331f497ccea3d840a4051f75341fdf",
      "tree": "792c2f17d35e8cc7aa73e53f76743f0ceb4bc8a3",
      "parents": [
        "6621ca868c935a82468e07ea2e5a165f40750658"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:40:39 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 12:40:39 2005 +0000"
      },
      "message": "[ospfclient] add static qualifier\n\n2005-11-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiclient.c: add static qualifier to relevant functions.\n\t* ospfclient.c: ditto\n"
    },
    {
      "commit": "6621ca868c935a82468e07ea2e5a165f40750658",
      "tree": "01db8cd66509c8afd2057558b048fc134c1371b8",
      "parents": [
        "5906476bea21153f5d757e364b8e4c604b72cef1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 13:02:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 13:02:08 2005 +0000"
      },
      "message": "[zebra] fix some small compile errors, mark several functions static\n\n2005-11-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) fix some small compile errors, and mark several\n          functions as static.\n        * kernel_socket.c: (ifan_read) should be static.\n          fix missing brackets.\n          (ifm_read,ifam_read,rtm_read_mesg,kernel_read) Make static\n          (ifam_read_mesg) make static. fix incorrect variable name.\n          (rtm_read) make static. Fix call to rib_delete_ipv4 which\n          should be rib_delete_ipv6.\n          (routing_socket,kernel_init) should be static. Void argument\n          should be specified as such, not left incomplete.\n        * rt_netlink.c: rt.h should be included, contains prototypes of\n          exported functions.\n          (kernel_delete_ipv6_old) fix sign of index argument.\n        * rt_socket.c: Exact same as previous. Also, make various\n          functions static.\n        * rtread_getmsg.c: Include zserv.h, which prototypes\n          route_read. Make static.\n        * rtread_sysctl.c: zserv.h and rt.h should be included.\n          fix definition of route_read.\n"
    },
    {
      "commit": "5906476bea21153f5d757e364b8e4c604b72cef1",
      "tree": "09fb18f3bc10b6b5e3adf01bfef49cfd3115254e",
      "parents": [
        "ad72740e884f16c1f30a99168428fdd15fadaa68"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 02:48:14 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 02:48:14 2005 +0000"
      },
      "message": "[tests] Add empty-path and sequence+1ASN test data to aspath_test.c\n\n2005-11-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* aspath_test.c: Add an empty aspath to test segments, and to\n\t  compare tests.\n\t  Add a segment identical to seq1, but with one extra asn.\n\t  Fix bogus free of stream in make_aspath for case where\n\t  no stream was allocated (empty path data).\n"
    },
    {
      "commit": "ad72740e884f16c1f30a99168428fdd15fadaa68",
      "tree": "79126f6d960dd8ab96043203d728edfdc04f67a1",
      "parents": [
        "c24d602e82d31a2fcbccb4cc3b66f8d0a79d5f22"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 02:47:02 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Nov 23 02:47:02 2005 +0000"
      },
      "message": "[bgp] Fix SEGV if empty path is confed-compared ([quagga-users 5968])\n\n2005-11-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_aspath.c: (assegments_parse) should be static\n\n2005-11-23 Juergen Kammer \u003cj.kammer@eurodata.de\u003e\n\n\t* bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case\n\t  where one or both paths are empty.\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": "77b1cffe3b71c886152534b8507f00c7fcbd12c9",
      "tree": "c5eb056d6254172e741b65586d71e2e6c54fc094",
      "parents": [
        "4859e20c40070ea362627529c52f35de105acc44"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 02:15:50 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 02:15:50 2005 +0000"
      },
      "message": "[isisd] remove includes of common system headers.\n\n2005-11-20 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) remove includes of very common system headers,\n          these are already picked up by zebra.h. Further, including\n          them before zebra.h messes up all our lovely (sarcasm)\n          autoconf\u0027d detecting of platform specific things. Recent\n          addition of stdint.h to configure.ac and zebra.h appears\n          particularly to throw up this problem.\n"
    },
    {
      "commit": "4859e20c40070ea362627529c52f35de105acc44",
      "tree": "6418a806404f10d2b0949820329e1f9a57be4040",
      "parents": [
        "649654aba22704a792949374990bc2a29c357de8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 02:09:32 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Nov 20 02:09:32 2005 +0000"
      },
      "message": "- quagga.spec.in: Release sub-rev now release_rev macro, for rpmbuild -D\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": "889e9311e5c900ce24eecf00fcb5b8b9d51bb020",
      "tree": "d5f3ebd53e4185157027becf01d67ace5400e24d",
      "parents": [
        "0fb58d5d7993b638fc46085944d17d3a54d66046"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:46:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:46:35 2005 +0000"
      },
      "message": "[workqueue] Update workqueue users callbacks to additional arguments\n\n2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) pass struct work-queue to callback functions.\n\t* workqueue.h: (struct work_queue) move the state flag\n\t  variables to end.\n\t  Add an opaque pointer to spec, for user-data global to the\n\t  queue.\n\t  Pass reference to work_queue to all callbacks.\n\t* workqueue.c: (work_queue_item_remove) pass ref to workqueue\n\t  to user callbacks.\n\t  (work_queue_run) ditto.\n"
    },
    {
      "commit": "0fb58d5d7993b638fc46085944d17d3a54d66046",
      "tree": "9b1195ad505d2c14fdf09036db4f324ff3ec7f18",
      "parents": [
        "76367ea9753aa9cef7cf5d3c954f55b5725f31da"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:31:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:31:49 2005 +0000"
      },
      "message": "2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (rib_process) convert to new workqueue specs and\n\t  shut up gcc, which complains about cast from void via\n\t  function parameters, for some dumb reason. Do the cast\n\t  inside the function instead.\n\t  (rib_queue_qnode_del) ditto.\n\t  (rib_queue_init) no need for the casts anymore.\n"
    },
    {
      "commit": "76367ea9753aa9cef7cf5d3c954f55b5725f31da",
      "tree": "d3b6dc5bd84fb5db7db89cef1d5c1f0bc302f9ca",
      "parents": [
        "190880dc790007a14911ef8c170af33a50a7a674"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:05:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 14:05:35 2005 +0000"
      },
      "message": "[bug #231] check and include stdint.h, also add std\u003dc99 to gcc CFLAGS\n\n2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Tell gcc we like C99.\n\t  [bug #231] Check and test for stdint.h.\n\t* lib/zebra.h: [bug #231] include stdint, if its there.\n"
    },
    {
      "commit": "190880dc790007a14911ef8c170af33a50a7a674",
      "tree": "8de89e02883f522cd5d730a416ce771fd2f23ed2",
      "parents": [
        "31a5976bb99f1875ebcfc29a6359f3a7ae81a795"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 12:07:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 14 12:07:47 2005 +0000"
      },
      "message": "2005-11-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Add state to detect queue floods.  There\u0027s no sense\n\t  trying to be sparing of CPU resources, if the queue is\n\t  flooding and using ever more memory resources. we should just\n\t  get on with clearing the queue.\n\t  The sense of delay and hold were wrong way around, fix.\n\t* workqueue.h: (struct work_queue) Add status bitfield.  Add\n\t  \u0027flood\u0027 integer to workqueue spec.  Add runs_since_clear\n\t  counter to workqueue.\n\t* workqueue.c: (work_queue_new) set defaults for delay, hold\n\t  and flood.\n\t  (work_queue_add) initial schedule should use delay, not hold.\n\t  (show_work_queues) Print flood field, conserve whitespace.\n\t  (work_queue_unplug) use delay, not hold.\n\t  (work_queue_run) consecutive runs should be seperated by hold\n\t  time, not delay.\n\t  Keep track of number of consecutive runs, go into \u0027overdrive\u0027\n\t  if queue is being flooded, we can\u0027t avoid making heavy use of\n\t  resources, better to use CPU than ever more RAM.\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": "6fe70d1b35c189cb1e488b2c26551ba7baac6148",
      "tree": "c2fc75ff90d6ad2d8a05f1f8a6414a913be53a8d",
      "parents": [
        "db29ae5fcaee1d2de371415e351afe6c3df19874"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:55:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:55:10 2005 +0000"
      },
      "message": "[solaris] Extra debug and cross-checks for kernel_socket, two Sol9 fixes.\n\n2005-11-12 Alexander Gall \u003cgall@switch.ch\u003e\n\n\t* See [quagga-dev 1815]\n\t* kernel_socket.c: (rtm_write) Use SAROUNDUP when HAVE_SIN_LEN\n\t  is not available.\n\t* rt_socket.c: (kernel_rtm_ipv6(_multipath)) set family to\n\t  AF_INET6 on ipv6 routes.\n\n2005-11-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: Add RTA_NAME_GET macro to extract name from\n\t  sockaddr_dl. Add some more RTF_ flags.\n\t* (ifan_read) Add some debug messages.\n\t* (ifm_read) Add more debug messages. More robust cross-checks\n\t  of index against name.\n\t  Fall back to by-name lookup if the index lookup fails, future\n\t  proofing more than anything else.\n\t  (ifam_read_mesg) Read RTA_IFP. Add debug messages.\n\t  (ifam_read) More debug. If there\u0027s an RTA_IFP and it isn\u0027t\n\t  the name of the interface, save it as the label.\n\t  (rtm_read_mesg) Read RTA_IFP.\n\t  (rtm_read) allow name to be retrieved.\n\t  (rtmsg_debug) expand on the debug message.\n"
    },
    {
      "commit": "db29ae5fcaee1d2de371415e351afe6c3df19874",
      "tree": "616eb06aa27c650c064d07d84dbebb95485ec258",
      "parents": [
        "58e1befe5fbd6eade52a1536acb49ea4b4fc5837"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:36:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 12 22:36:41 2005 +0000"
      },
      "message": "[lib] \u0027show route-map\u0027 should print call action seperate from exit policy\n\n2005-11-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* routemap.c: (vty_show_route_map_entry) call action is\n\t  seperate from exit action, latter should still be printed\n\t  regardless of whether a call is specified.\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": "cb3d31db278a522641f2ec5408034b819091bab6",
      "tree": "ae41d89daef54d25b1c67a040cd00b6b22f42ba0",
      "parents": [
        "cf220d1f7397fa2d113d4e5f8a8d6c927a610cba"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 11:16:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 11:16:11 2005 +0000"
      },
      "message": "[doc] quagga.info updated /again/ due to version bump, d\u0027oh.\n"
    },
    {
      "commit": "cf220d1f7397fa2d113d4e5f8a8d6c927a610cba",
      "tree": "50f361ec167e4d868cef80cd780c3b6dfa1d60fc",
      "parents": [
        "4de6ddcd92290c4f04cc67d93a0cbacbc96df04b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 10:28:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 10:28:59 2005 +0000"
      },
      "message": "2005-11-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* NEWS: Update.\n\t* configure.ac: Bump to 0.99.2\n"
    },
    {
      "commit": "4de6ddcd92290c4f04cc67d93a0cbacbc96df04b",
      "tree": "8a7b4afc38a858574689aae7bbd0fe78603bd8fd",
      "parents": [
        "2265f1ddcf8645fe2b4d3e994db643744a99bd09"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:59:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:59:10 2005 +0000"
      },
      "message": "- commit the actual file..\n"
    },
    {
      "commit": "2265f1ddcf8645fe2b4d3e994db643744a99bd09",
      "tree": "fc31446c1c502ee72d6199ba98be1661b6c9892c",
      "parents": [
        "0994c3a59c114e4e2427f2c02cb2f12881854e36"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:58:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:58:35 2005 +0000"
      },
      "message": "[trivia] update quagga.info, auto-built file\n\n2005-11-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.info: update auto-built file. Methinks it\u0027s time to\n\t  remove from CVS..\n"
    },
    {
      "commit": "0994c3a59c114e4e2427f2c02cb2f12881854e36",
      "tree": "8f2230655273a995a554ffa51e2daad325c08df3",
      "parents": [
        "ca6383ba74cca26d8e33184a1c2abc69a1149ef9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:52:40 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 11 09:52:40 2005 +0000"
      },
      "message": "[zebra] Fix warning and small connected-label changes merge error.\n\n2005-11-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: (ifm_read) arithmetic on void pointer\n\t  warning.\n\t  (ifam_read) Fix error from connected-with-label merge,\n\t  something crept in from the pending Solaris kernel_socket.c\n          patch which shouldn\u0027t have.\n"
    },
    {
      "commit": "ca6383ba74cca26d8e33184a1c2abc69a1149ef9",
      "tree": "dc77b2ef35da08eb7760b0b56cbf56326539f45f",
      "parents": [
        "5729e089d92dda6163d632e19b1b9dc0217c4893"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 10 10:21:19 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 10 10:21:19 2005 +0000"
      },
      "message": "2005-11-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* HACKING: Add recommendation to provide a single Subject\n\t  style description to the commit message.\n\t  Add some recommendations for ChangeLog.\n"
    },
    {
      "commit": "5729e089d92dda6163d632e19b1b9dc0217c4893",
      "tree": "0726836a4af0e35ac0f1afa5b3b83c3034082db3",
      "parents": [
        "1189075bca319d9a0bc5be9a0548af75f6b36951"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 07 03:19:51 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 07 03:19:51 2005 +0000"
      },
      "message": "[doc] List snmptrap.texi as a source, so it gets included in dist\n\n2005-11-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: snmptrap.texi needs to be listed as a source,\n\t  not disted otherwise.\n"
    },
    {
      "commit": "1189075bca319d9a0bc5be9a0548af75f6b36951",
      "tree": "5c0399ce2340a96e23f238d2b72114b3139db30f",
      "parents": [
        "aa5943f771833113bab14bfd77dea8a9c770f61c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 05 16:29:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 05 16:29:54 2005 +0000"
      },
      "message": "- Makefile.am: quagga.pam.stack should be in dists\n- quagga.spec.in: introduce dist variable to allow for differences\n  e.g in buildreqs, pam config files. etc.\n"
    },
    {
      "commit": "aa5943f771833113bab14bfd77dea8a9c770f61c",
      "tree": "324620397ebfd4ee96e5fddfb5e69449151a516c",
      "parents": [
        "a3957e3838145e3ca624236712bcb6999a35d9b1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 21:53:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 21:53:59 2005 +0000"
      },
      "message": "2005-11-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* quagga.info: Update auto-built file\n\t* ospf6d.texi: Add example config\n\t* bgpd.texi: Add example configs. Couple of cleanups of format\n\t  and macros.\n\t* routemap.texi: Add an explanation of how route-maps work.\n\t  Document the call and exit-policy commands.\n"
    },
    {
      "commit": "a3957e3838145e3ca624236712bcb6999a35d9b1",
      "tree": "dc6309be79fb66a61734034e9a4af4e12240b1f6",
      "parents": [
        "e832203d8e660fbdbc71471cd8962c23b1721950"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:48:25 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:48:25 2005 +0000"
      },
      "message": "2005-11-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* snmptrap.texi: Contributed documentation, contributors name\n\t  is lost (please get in touch). Configuring SNMP for logging\n\t  traps.\n\t* snmp.texi: Minor formatting changes.\n\t* quagga.info: Update auto-built file\n"
    },
    {
      "commit": "e832203d8e660fbdbc71471cd8962c23b1721950",
      "tree": "39ced536d3569f957f5b327f32226fcbcd3796f0",
      "parents": [
        "c8c1521a7d39d165ef856c1a3a6dcd54f0532e8d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:34:06 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:34:06 2005 +0000"
      },
      "message": "2005-11-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* prototype.dev.in: lib/md5-gnu.h is now lib/md5.h\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": "8570676c4ffb407284d51a80c045d6989b7af6d7",
      "tree": "ad8a30ad88ffd7d6da6700256390f385261c1c23",
      "parents": [
        "11967e92542b782ccd8d800938a2845b816539ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:25:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Nov 04 12:25:23 2005 +0000"
      },
      "message": "- quagga.pam: pam_stack.so module is deprecated, use \u0027include\u0027 instead.\n- quagga.pam.stack: the old pam_stack way, kept to allow spec file to\n  backwards compatible (changes to spec file pending local testing)\n"
    },
    {
      "commit": "11967e92542b782ccd8d800938a2845b816539ce",
      "tree": "df1a502387cc0fd519f4614608e635b89a5f9038",
      "parents": [
        "a49ad236da5cff707bdb54e14e7852d63ee3c9ea"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:09:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:09:10 2005 +0000"
      },
      "message": "- bah, fix likkle typo.\n"
    },
    {
      "commit": "a49ad236da5cff707bdb54e14e7852d63ee3c9ea",
      "tree": "7012778d844e3e0fcea3b04e6ed7daff8817ea69",
      "parents": [
        "412008568bddbc9475eafba224d1a1703d6cca97"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:00:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:00:54 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memtypes.h: Update auto-built file.\n"
    },
    {
      "commit": "412008568bddbc9475eafba224d1a1703d6cca97",
      "tree": "8f9fc89b99f657af060904ae353ba07b9375321f",
      "parents": [
        "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:52:18 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:52:18 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_damp.c: (bgp_reuse_timer) struct bgp can be retrieved via\n\t  the struct bgp_damp_info, no need to guess by using\n\t  bgp_get_default().\n"
    },
    {
      "commit": "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4",
      "tree": "d580aa8f809edf9a75968f7416e8415ffa72784c",
      "parents": [
        "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: Include memory.h\n\t  (connected_add_ipv4) Use MTYPE for ifc label.\n\t  (connected_add_ipv6) Also should accept label. Store it in ifp.\n\t  (connected_del_ipv4) Taking label as argument is pointless.\n\t* rt_netlink.c: (netlink_interface_addr) update label usage\n\t  for connected_{add,delete} functions.\n\t* if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT\n\t  so we also find out about NOXMIT interfaces like VNI.\n\t  Bit of hackery to turn interface names into the primary\n\t  interface name, later with routing socket messages we only\n\t  will about primary interfaces anyway, so we must normalise\n\t  the name.\n\t  (if_get_addr) take label as argument, so it can\n\t  be passed to connected_add.\n\t  If label is provided, then it is interface name to issue the\n\t  ioctl for address information on, not the ifp name.\n\t  (interface_list) List AF_UNSPEC too, just in case.\n\t* if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.\n\t* interface.c: (if_addr_wakeup) Some very bogus code - sets\n\t  IFF_RUNNING - add comment.\n\t  (if_refresh)\n\t  (ip_address_install) Use MTYPE for ifc label.\n\t* ioctl_solaris.c: (if_mangle_up) New function. Hackery to make\n\t  IFF_UP reflect whether any addresses are left on the\n\t  interface, as we get signalled for IFF_UP flags change on the\n\t  primary interface only. Logical interfaces dont generate\n\t  IFINFO, but we do get an RTM_DELADDR.\n\t  (if_get_flags) Call if_mangle_up before return.\n\t* kernel_socket.c: (ifam_read) Fixup calls to\n\t  connected_{add,delete} to match above changes. Rename gate\n\t  variable to brd, less confusing.\n\t  Pass the interface name as a label, if it is not same name\n\t  as ifp-\u003ename.\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": "9c4f1c6f10d4770933c0558528a0e59557b96230",
      "tree": "3e5d6c73e9e78b0aa6ed2cc8ffe276f2b19f3548",
      "parents": [
        "484315fd274b3782f72abc95c9796c604e53bcc9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:04:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:04:07 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if.c: (connected_free) use MTYPE for connected label.\n\t  memtypes.c: Add MTYPE_CONNECTED_LABEL\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": "34204aac424f8c29317d863d64f1c3bb4d241a50",
      "tree": "a7ad861d7b3454dbe96b6e7a31d7dbacc4ad24e3",
      "parents": [
        "35a60c2d3c217e3b835821a7f6ea458e2eff44cf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:00:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:00:23 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra.h: BSD BYTE_ORDER define isn\u0027t available everywhere,\n\t  define if needs be.\n\t* checksum.h: new file. checksum.c exports in_cksum, provide\n\t  a header for it.\n\t* checksum.c: (in_cksum) callers shouldn\u0027t have to know it uses\n\t  a u_short internally, change to void *.\n\t* Makefile.am: Add checksum.h\n\t* command.h: remove bogus trailling slash.\n\t* md5.c: (general) Update it for the twentieth century. ANSI\n\t  declarations are widely supported now.. Don\u0027t include system\n\t  headers, only include zebra.h. Use POSIX types (the\n\t  alternative is to define u_int64_t in a portable way - rest\n\t  of Quagga needs same cleanup).\n\t  Make endian-conditional code be compiler conditional rather\n\t  than preprocessor conditional, so that breakage gets noticed\n\t  quicker.\n\t* md5.h: POSIX types. Get rid of the odd __P() non-ANSI capable\n\t  compiler compatibility hack.\n"
    },
    {
      "commit": "35a60c2d3c217e3b835821a7f6ea458e2eff44cf",
      "tree": "ff6dc20fdbf2f081556efaa0edec3ed341b29e97",
      "parents": [
        "e5b308d1af147c78acd2803f4006463e6ff67444"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Oct 30 23:51:32 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Oct 30 23:51:32 2005 +0000"
      },
      "message": "2005-10-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ripd.c: (rip_response_process) Instead of calling\n\t  rip_interface.c:if_valid_neighbor(), call the equivalent\n\t  library function if_lookup_address().\n\t* rip_interface.c: (if_valid_neighbor) Remove function, since it is\n\t  essentially equivalent to the if_lookup_address() library function.\n\t* ripd.h: (if_valid_neighbor) Remove function declaration.\n"
    },
    {
      "commit": "e5b308d1af147c78acd2803f4006463e6ff67444",
      "tree": "712ff117dd7d92e03f345199d731ed762433a62a",
      "parents": [
        "88d6cf37f66c3b7d1abdaa20875418192d5219b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 20:19:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 20:19:49 2005 +0000"
      },
      "message": "2005-10-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd.texi: Document the new spf and max-metric commands, and\n\t  the additional form of dead-interval. Add documentation for\n\t  various other commands. Cleanup misc stuff, citations, etc.\n\t  Add some example configurations.\n\t* overview.texi: RFC3137 support added.\n\t* Makefile.am: Make quagga.pdf depend on the _TEXINFOS\n\t  variable, this still doesn\u0027t fix the dependency though,\n\t  sadly.\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": "92779fe51dd061ab1502a9acdc0cf5241748e0c7",
      "tree": "e9bfbaca14c5e87dee26c9e98aa1cefcb3650cea",
      "parents": [
        "05865c90ab0bc95b8ca1a54c794809891666cdce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 28 10:23:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 28 10:23:09 2005 +0000"
      },
      "message": "2005-10-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: Add rip_interface.h, or else it doesn\u0027t get\n\t  included in dists.\n"
    },
    {
      "commit": "05865c90ab0bc95b8ca1a54c794809891666cdce",
      "tree": "885eb032e62c4acd4706e27c24c7bc49aa259899",
      "parents": [
        "0241684ea77e8aa20ad2cb3903589559f4a7b009"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:49:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:49:54 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: Use MTYPE_HOST, MTYPE_STRVEC. Some other fixups,\n\t  including fixing some likely leaks in config_write_file.\n\t* vty.c: memory macro usage fixes.\n\t  (vty_read_config) fix leak where relative config file is\n\t  specified.\n"
    },
    {
      "commit": "0241684ea77e8aa20ad2cb3903589559f4a7b009",
      "tree": "2bb64a53f5d8c1091839be9e1afb6e4625828f38",
      "parents": [
        "216565ab68148d3161422c0d73730614bfeccd7c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:05:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:05:16 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Cleanup a some calls to XFREE,strdup, etc. to use\n\t  the memory.h macros.\n\t* memtypes.c: Add MTYPE_IF_RMAP_NAME, MTYPE_PQUEUE,\n\t  MTYPE_PQUEUE_DATA and MTYPE_HOST.\n\t* memtypes.h: update auto-built file.\n\t* if_rmap.c: Use MTYPE_IF_RMAP_NAME.\n\t* pqueue.c: Use the two MTYPE_PQUEUE mtypes for allocations.\n"
    },
    {
      "commit": "216565ab68148d3161422c0d73730614bfeccd7c",
      "tree": "d744175fb88d741b40a8131848b361bf8c842084",
      "parents": [
        "dc63bfd49513b7ca157c3992c8bc9da9d736fc39"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:35:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:35:28 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: Update couple more functions to specify void\n\t  explicitely.\n"
    },
    {
      "commit": "dc63bfd49513b7ca157c3992c8bc9da9d736fc39",
      "tree": "d6ccb6737c0354d106c6b85013979cef2abb3353",
      "parents": [
        "e029d448587551be7543e64e278dbb566f57509a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:31:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:31:05 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) static/extern functions and definitions.\n\t* rip_interface.h: new file, export the public functions from\n\t  rip_interface.c\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": "c188c37caaf589a17b22e9889e63ec96f2f57106",
      "tree": "018d7f024a08c986a5558425ede05590518c9a23",
      "parents": [
        "f9ad937f537df92bf3119686eee97db7b7176674"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Oct 21 02:57:41 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Oct 21 02:57:41 2005 +0000"
      },
      "message": "2005-10-20 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_multicast_ipv4) If IP_ADD_MEMBERSHIP\n\t  fails with errno equal to EADDRINUSE, then issue an info\n\t  message and try IP_DROP_MEMBERSHIP followed by IP_ADD_MEMBERSHIP.\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": "24065a3d4a61a136a17996a48df02b0b180bc6f0",
      "tree": "e1e6463a5d56500d94abb74b320bcb6b99d4c6a1",
      "parents": [
        "38d3c163cff92465c94732cb7ecb9761053d2038"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Oct 20 22:28:14 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Oct 20 22:28:14 2005 +0000"
      },
      "message": "2005-10-20 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memory.c: (show_memory_vty) Omit zero statistics.  Print separators\n\t  only if some non-zero stats have been printed in between.\n\t  (show_separator) New function to print a separator.\n\t  (show_memory_all) Keep track of whether a separator is needed\n\t  between the different memory statistics groups.\n"
    },
    {
      "commit": "38d3c163cff92465c94732cb7ecb9761053d2038",
      "tree": "9ef8e7525d9d671ae833de6cd44d820812ac0898",
      "parents": [
        "5012322ddb0219138ee3583c50fd6e99c5a1d857"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Oct 19 19:29:59 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Oct 19 19:29:59 2005 +0000"
      },
      "message": "2005-10-17 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n        * ripd.c: rip_create_socket() for each packet, it does not bind to the\n          proper interfaces because we forget to use the from address when\n          it is specified.\n"
    },
    {
      "commit": "5012322ddb0219138ee3583c50fd6e99c5a1d857",
      "tree": "8b6d5f43579428b29c72167ac099fe215ae1d9e9",
      "parents": [
        "eb3da6dfa92be8083bbe1b4436818754be158b93"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Oct 18 20:19:13 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Oct 18 20:19:13 2005 +0000"
      },
      "message": "2005-10-18 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memtypes.h: Add MTYPE_OSPF_VERTEX_PARENT (to match memtypes.c).\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": "d751f00299e0cd9be8f0e702288efe48ac1ddbca",
      "tree": "548f9962891c609383391b43e1936cfceb93d5ab",
      "parents": [
        "d06b2a64b7093f998e7b0f33454efc23190123ac"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:01:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:01:09 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* quagga.texi: Rejiggle the copyright sections a bit, seems to\n\t  make makeinfo happier and generates info pages again on FC4.\n\t* quagga.info: Update this auto-built file.\n"
    },
    {
      "commit": "d06b2a64b7093f998e7b0f33454efc23190123ac",
      "tree": "00117184e0d6ea2084d02abf31b4564182a03fc1",
      "parents": [
        "84771ee0deadae6d83b939a2d3f8f83cc420a829"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:53:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:53:54 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: (connected_{add,delete}_ipv4) label should\n\t  be const qualified.\n"
    },
    {
      "commit": "84771ee0deadae6d83b939a2d3f8f83cc420a829",
      "tree": "68b3e5c5cc6e84dd7d57a4bda2e61616d518a1a2",
      "parents": [
        "77df1f78597af79209777d264ec9986f33a2fd17"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* test-privs.c: Privileges unit test.\n\t* Makefile.am: build testprivs\n\t* aspath_test.c: fix a few sign warnings\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": "fac3e8410ade65e269aa2d896bcd3a0b68f10d70",
      "tree": "a9c9653baee68c5f2a63b53242815dd99329195f",
      "parents": [
        "f52d13cb2e8e7197934d5f241f88647f9b9d78b8"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:45:43 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:45:43 2005 +0000"
      },
      "message": "2005-10-06 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n        * rip_interface.c: Now the command \"no ip rip split-horizon\n          poisoned-reverse\" just inhibates the poisoned-reverse effects\n          but keep spli-horizon activ.\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": "c05612b9a702d0f49c379c92deb6daab55372aea",
      "tree": "3e99659456e05f2d3d428c430c883f49ad7fdd28",
      "parents": [
        "13fb40ac99823c405137a42d7666785fd7ac641a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 16:36:54 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 16:36:54 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* rt_netlink.c: (netlink_request) Use memset to clear structure\n\t  before calling sendto (eliminates a valgrind error message about\n\t  uninitialized data).\n"
    },
    {
      "commit": "13fb40ac99823c405137a42d7666785fd7ac641a",
      "tree": "2332722bf346447bd5bfebf3fdc0fb97dc85502b",
      "parents": [
        "10fc9183686d9d7183949c9e74a1c51d98ddb67e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 01 06:03:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 01 06:03:04 2005 +0000"
      },
      "message": "\t* isis_adjacency.c: Stop expire timer while deleting adjacency.\n\t* isis_events.c: Stop pseudo LSP thread while resigning circuit from\n\t  level.\n\t* isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not\n\t  in sync with zebra if it\u0027s changed.\n\t* isis_spf.c: Schedule route validating etc even if tent was empty.\n\t  It\u0027s probably because we just don\u0027t have any adjacencies.\n\t* isisd.c: Write minimum spf interval into configuration.\n"
    },
    {
      "commit": "10fc9183686d9d7183949c9e74a1c51d98ddb67e",
      "tree": "c2f5c4a32f0e062db0a1f7492d418dca92053134",
      "parents": [
        "6638c1ab3d4c0043a49a3a67768cccf4a23648dc"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:09:39 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:09:39 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* isis_route.c: fix EXTREME_DEBUG compilation\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": "2d74db55c463231e3542207bc3d940e2563e6b5b",
      "tree": "60f4c58957899ceb7987729882d948d59fe26ecf",
      "parents": [
        "5e4914c31ead7b99eeed73067451367336b21422"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:07:50 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:07:50 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* bgp_packet.c: fix compilation when DEBUG is used.\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": "fbf5d033041e406ecefd27c2deebf5a4953d1155",
      "tree": "e9173ab5e05fc86e95f325d2cb2a7a123eb33327",
      "parents": [
        "3fdb2dd9dd8b4ab3517896092dd1b677d191adf9"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 11:25:50 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 11:25:50 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/filer.c: show protocol name in filter_show()\n    * lib/plist.c: show protocol name in vty_show_prefix_entry()\n    * routemap.c: show protocol name in vty_show_route_map_entry()\n    * lib/vty.c: in vty_command(), show protocol name if command unknown\n\n    * zebra/zserv.c: Always provide distance fo route add\n\n    * ripd/rip_snmp.c: rip2IfConfReceive() sends values in conformance\n      with RFC. Also PeerDomain is now set to a STRING type.\n    * ripd/ripd.h: rip_redistribute_add() API includes metric and distance\n    * ripd/ripd.c: rip_redistribute_add() API i.e. stores metric and distance\n      Now allows a RIP-route to overcome a redistributed route coming\n      from a protocol with worse (higher) administrative distance\n      Metrics from redistribution are shown in show ip rip\n    * ripd/rip_zebra.c: adapt to the rip_redistribute_add() API, i.e.\n      provide distance and metric\n    * ripd/rip_interface.c: adapt to the rip_redistribute_add() API\n    * ripd/rip_routemap.c: no RMAP_COMPILE_ERROR on (metric \u003e 16) usage\n      rather a CMD_WARNING, because set metric ius shared with other\n      protocols using larger values (such as OSPF)\n      The match metric action takes first external metric if present\n      (from redistribution) then RIP metric.\n"
    },
    {
      "commit": "3fdb2dd9dd8b4ab3517896092dd1b677d191adf9",
      "tree": "2f2bdff0a3797517100d0f1319cd3e46bb00f53f",
      "parents": [
        "d3d7474ba98f01e6d9994ff48c0b3a4331a8ef2a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:45:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:45:54 2005 +0000"
      },
      "message": "\t* *.c: Massive cleanup of lists loops. Stop abusing ALL_LIST_ELEMENTS.\n\t  Replace XMALLOC + memset with XCALLOC. Fix some indentation issues.\n\t  The only really significant change is simplified isis_delete_adj\n\t  function in isis_adjacency.c.\n"
    },
    {
      "commit": "d3d7474ba98f01e6d9994ff48c0b3a4331a8ef2a",
      "tree": "efa9e1f7f1e7fdb79f5374c78301218f2b68bc95",
      "parents": [
        "9551eea4465e0e3eaab7a133fc06705c8f36afc4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:30:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:30:51 2005 +0000"
      },
      "message": "\t* isis_dynh.c, isisd.h: Implement dynamic hostname cache cleanup.\n\t* isis_lsp.c: Refresh dynamic hostname in the cache while refreshing\n\t  topology LSP.\n"
    },
    {
      "commit": "9551eea4465e0e3eaab7a133fc06705c8f36afc4",
      "tree": "ec76ab7baa0cbea12f85fc162053715ede4fa4e9",
      "parents": [
        "c1a03d4774f8ecc30a21267469d48cb2276de48c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:26:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:26:25 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Make topology generator generate TE TLVs if necessary.\n\t  Also take care of inserting dynamic hostname of topology TLVs into\n\t  cache.\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": "aa2e32be264710ef208516dfe1661b8148c3eede",
      "tree": "c990a1ce60bfbfd4847099ef8c013db0638b794d",
      "parents": [
        "fac1f7cc8eaa750fa46985977a97e05e493228a2"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 13:42:11 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 13:42:11 2005 +0000"
      },
      "message": "    * connected.c: flag connected_up_ipv6() and connected_down_ipv6()\n      usage with HAVE_IPV6\n"
    },
    {
      "commit": "fac1f7cc8eaa750fa46985977a97e05e493228a2",
      "tree": "9cb300fd56261c38b51e621ccb72523ec7b4bf4a",
      "parents": [
        "82a8428c84df1b1e7a1be5a5114a5d9a6f2bc2c4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:26:26 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:26:26 2005 +0000"
      },
      "message": "\t* isis_spf.c: Changing cost from uint16_t to uint32_t. Unset\n\t  ISIS_ROUTE_FLAG_ACTIVE flag before running SPF.\n\t* isisd.[ch]: Separate route tables for different levels. SPF is done\n\t  separately, but in case of L1L2 area they have to be merged.\n\t* isis_zebra.c: Set/unset ISIS_ROUTE_FLAG_ZEBRA_SYNC flag correctly in\n\t  case of adding/removing IPv4 routes.\n\t* zebra_route.c: Rework route validating process. Merging L1 and L2\n\t  tables in case of L1L2 area.\n\n        In short - many changes to make SPF work more correctly, add/remove\n        to/from RIB also works now. It\u0027s still very far from perfect though.\n"
    },
    {
      "commit": "82a8428c84df1b1e7a1be5a5114a5d9a6f2bc2c4",
      "tree": "0a1c15480d52b36cb9144add9816849014881fb3",
      "parents": [
        "309ddb199aa4627e4597653ca12eb3bc8c20ab54"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:15:36 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:15:36 2005 +0000"
      },
      "message": "\t* isis_spf.[ch]: Added TE TLVs to the SPF process. It seems to work\n\t  mostly, but needs certainly much more testing, especially transition\n\t  situation.\n"
    },
    {
      "commit": "309ddb199aa4627e4597653ca12eb3bc8c20ab54",
      "tree": "a61c592c3fc18c39e43fa784e772d5dbd1221a89",
      "parents": [
        "81ad8f6a1040eaf9d4230bd63b71d85397660653"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:06:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:06:47 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Put correct metric info into TE TLV\u0027s. Wide metric is\n\t  used only if only wide metric style (extended TLV\u0027s) is in use.\n"
    },
    {
      "commit": "81ad8f6a1040eaf9d4230bd63b71d85397660653",
      "tree": "93ccfab5fe8ca9d9e79b65aed0e359ab21f0a1c1",
      "parents": [
        "aa4376ec0c37b9b2d484e9503ad7b8e1a010afd2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:58:24 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:58:24 2005 +0000"
      },
      "message": "\t* isis_tlv.[ch]: New function tlv_add_in_addr() to put just one IPv4\n\t  address into TLV. Used for IPv4 address TLV (in case of LSP) and TE\n\t  router ID TLV.\n\t* isis_lsp.c: Use tlv_add_in_addr() and include router ID in LSP.\n"
    },
    {
      "commit": "aa4376ec0c37b9b2d484e9503ad7b8e1a010afd2",
      "tree": "a8a31d251e7601adb0c5a2e08cd4c6b03104c1b4",
      "parents": [
        "ea3be4c12223b00a69652a8be330961489212447"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:39:48 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:39:48 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Support for originating TE IS and IPv4 TLV\u0027s. No any sub\n\t  TLV handling yet.\n"
    },
    {
      "commit": "ea3be4c12223b00a69652a8be330961489212447",
      "tree": "900f18472ddbbd9f2c418771a5d8525d0a8b24b0",
      "parents": [
        "f21fb27298fd49ce695fd403e02bcbd5e9f0cd27"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:11:12 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:11:12 2005 +0000"
      },
      "message": "\t* isis_tlv.[ch]: Two new functions - tlv_add_te_is_neighs() and\n\t  tlv_add_te_ipv4_reachs() to handle TLV\u0027s with new metric. None of\n\t  them handle sub TLVs though for now.\n"
    },
    {
      "commit": "f21fb27298fd49ce695fd403e02bcbd5e9f0cd27",
      "tree": "b0d3bc891908d7291f0315cf582334c1e85d37df",
      "parents": [
        "2984d26eb08f42a8f470277cef6c1657f984e968"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:05:55 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:05:55 2005 +0000"
      },
      "message": "\t* isis_circuit.[ch]: Some preliminary support for specifying wide\n\t  circuit metrics. Needs more thinking though, but should do for now.\n"
    },
    {
      "commit": "2984d26eb08f42a8f470277cef6c1657f984e968",
      "tree": "94066fba1723bbc2ea9badaf2dc09ae9f7948a57",
      "parents": [
        "ffe543af88fca1d8be49c3a3fe2f50b02919c689"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 16:49:07 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 16:49:07 2005 +0000"
      },
      "message": "\t* isisd.[ch]: Introduce oldmetric flag for area and transition\n\t  metricstyle command. With metricstyle wide only extended TLVs\n\t  should be used.\n"
    },
    {
      "commit": "ffe543af88fca1d8be49c3a3fe2f50b02919c689",
      "tree": "9eac072d987227d11689443e4446ce2c82f79017",
      "parents": [
        "d24af186ea5a964300d93bb6fb4384911153d9d6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 25 12:04:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 25 12:04:25 2005 +0000"
      },
      "message": "\t* dict.[ch]: Revert all nonfunctional changes. It\u0027s external module\n\t  imported from kazlib and it\u0027s better not to screw it - there is\n\t  theoretical chance that we might want to merge changes from upstream\n\t  at some point. Also avoid the loss of info about upstream version\n\t  (rcsid).\n"
    },
    {
      "commit": "d24af186ea5a964300d93bb6fb4384911153d9d6",
      "tree": "7b8e57758edca8e12e5004192d6e14bd1cbb43c6",
      "parents": [
        "3d54927678139c580fd3029c17e7d8a94b3a60f7"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 24 14:00:26 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 24 14:00:26 2005 +0000"
      },
      "message": "\t* rib.h: Add note about behaviour of rib_add_ipv[46]* functions -\n\t  add is treated as implicit withdraw.\n"
    },
    {
      "commit": "3d54927678139c580fd3029c17e7d8a94b3a60f7",
      "tree": "5c7fd8ec889f67e5bc206cee4fbc12eaa5ee3762",
      "parents": [
        "ebf1ead0326bf18293c24ee151d22071e8bebc10"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 18:52:14 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 18:52:14 2005 +0000"
      },
      "message": "\t* isis_route.c: Fix output of nexthops in case of extreme debug.\n"
    },
    {
      "commit": "ebf1ead0326bf18293c24ee151d22071e8bebc10",
      "tree": "a39df91000789222ca622fec1325f4acaf2d564e",
      "parents": [
        "75b2dd025af1d839279a21ee4b3035085d17331c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "message": "\t* zebra_rib.c: Reduce the height of some staircases. Fix\n\t  rib_delete_ipv6() to match routes in the RIB by their gateway as\n\t  well as by destination.\n"
    },
    {
      "commit": "75b2dd025af1d839279a21ee4b3035085d17331c",
      "tree": "19435808ccbdc15bc1e19fbe2c6bdb44d2b6a782",
      "parents": [
        "319572cc52267bfd55cca5eaab405df4db27ddaf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 14:06:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 14:06:35 2005 +0000"
      },
      "message": "2005-09-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memtypes.{c,h}: Add MTYPE_AS_SEG_DATA.\n"
    },
    {
      "commit": "319572cc52267bfd55cca5eaab405df4db27ddaf",
      "tree": "576a148fe8515caf60bde98505a41845068c1d4d",
      "parents": [
        "5339cfdb7c3f6187452982173aa55ff525d1f6fe"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "message": "2005-09-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt\n\t  removal of static routes with multiple-hops introduced with\n\t  the workqueue conversion. We should free the relevant\n\t  nexthop and then get rib_process to run, otherwise we just\n\t  get same static route back again (with no way to unconfigure\n          it, because its already deleted from configuration).\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": "f06834b80504497824ce50b533ba4fedb6abf2c7",
      "tree": "65a379aa4cc493ae9e547be740a3169d86206586",
      "parents": [
        "e6a4feb763749ff0c63558db456e617915fd1386"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 10:44:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 10:44:04 2005 +0000"
      },
      "message": "\t* isis_lsp.c, isis_pdu.c, isis_spf.c: Remove some old unused code.\n"
    },
    {
      "commit": "e6a4feb763749ff0c63558db456e617915fd1386",
      "tree": "e348859f9ef281521ad13552e062ea6da44a2248",
      "parents": [
        "96e30387f164148fe47da6d4481283a61d761c97"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 09:53:21 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 09:53:21 2005 +0000"
      },
      "message": "\t* configure.ac: Test existance of strndup.\n\t* lib/str.[ch]: Add strndup() from glibc.\n"
    }
  ],
  "next": "96e30387f164148fe47da6d4481283a61d761c97"
}
