)]}'
{
  "log": [
    {
      "commit": "c9c93d50cc9cae2f7878434431eafab8f7ee8d89",
      "tree": "f027b74dc63f5716169bdfcdaedf7980abb58d2a",
      "parents": [
        "00c290e02edd6c906b669de9f31a45d14ed8bec0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 13:31:11 2005 +0000"
      },
      "message": "[ospfd] rename graceful to deferred, fix a tiny compile warning.\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) s/graceful/deferred/ in all files, the former term\n\t   is confusing wrt OSPF Graceful-Restart.\n\t* ospfd.c: (ospf_deferred_shutdown_check) dont return\n\t  a function which returns void. SOS complains about this.\n\t  (ospf_finish)\n"
    },
    {
      "commit": "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": "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": "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": "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737",
      "tree": "1d2a79a2ec4004f16b1ba3f2f2923ed8796cde83",
      "parents": [
        "c188c37caaf589a17b22e9889e63ec96f2f57106"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF millisecond resolution timer with adaptive,\n\t  linear back-off holdtime. Prettification of ospf_timer_dump.\n\t* ospf_dump.c: (ospf_timeval_dump) new function. The guts of\n\t  ospf_timer_dump, but made to be more dynamic in printing out\n\t  the relative timeval, sliding the precision printed out\n\t  according to the value.\n\t  (ospf_timer_dump) guts moved to ospf_timeval_dump.\n\t* ospf_dump.h: export ospf_timeval_dump.\n\t* ospf_flood.c: (ospf_flood) remove gettimeofday, use\n\t  the libzebra exported recent_time instead, as it\u0027s not\n\t  terribly critical to have time exactly right - the dropped\n\t  LSA will be retransmited to us if we don\u0027t ACK it.\n\t* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we\u0027re\n\t  not transmitting, just putting LSA back on update transmit list.\n\t* ospfd.h: delay and holdtimes should be unsigned.\n\t  Add spf_max_holdtime and spf_hold_multiplier.\n\t  Update default defines for delay and hold time to be in msec.\n\t  (struct ospf) change the SPF timestamp to a struct timeval.\n\t  Remove ospf_timers_spf_(un)?set.\n\t* ospfd.c: (ospf_timers_spf_{set,unset}) removed.\n\t  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier\n\t* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval\n\t  now, update with gettimeofday.\n\t  (ospf_spf_calculate_schedule) Change SPF timers to millisecond\n\t  resolution.\n\t  Make the holdtime be adaptive, with a linear increase in\n\t  holdtime ever consecutive SPF run which occurs within holdtime\n\t  of previous SPF, bounded by spf_max_holdtime.\n\t* ospf_vty.c: Update spf timers commands.\n\t  (ospf_timers_spf_set) trivial helper.\n\t  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,\n\t  initial hold and max hold times with millisecond resolution.\n\t  (ospf_timers_spf_cmd) Deprecated. Accept the old values,\n\t  convert to msec, truncate to new limits.\n\t  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.\n\t  (no_ospf_timers_spf_cmd) deprecated form, same as previous.\n\t  (show_ip_ospf_cmd) Display SPF parameters and times.\n\t  (show_ip_ospf_neighbour_header) Centralise the \u0027sh ip os ne\u0027\n\t  header.\n\t  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of\n\t  the multiple spaces which were making the lines even longer.\n\t  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header\n\t  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field\n\t  widths for NBMA neighbours.\n\t  (show_ip_ospf_neighbor_int) Use header function.\n\t  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,\n\t  local array - safer.\n\t  (show_ip_ospf_neighbor_detail_sub) ditto\n\t  (ospf_vty_init) install the new SPF throttle timer commands.\n"
    },
    {
      "commit": "f9ad937f537df92bf3119686eee97db7b7176674",
      "tree": "8c203f4bffabbb2fd27ffeafd2e87e5fd704a0e2",
      "parents": [
        "24065a3d4a61a136a17996a48df02b0b180bc6f0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) OSPF fast, sub-second hello and 1s dead-interval\n\t  support. A warning fix. Millisec support for ospf_timer_dump.\n\t  Change auto-cost ref-bandwidth to add a comment to write out\n\t  of config, rather than printing annoying messages to vty on\n\t  startup.\n\t* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.\n\t  Callers typically specify a length of 9, so most see\n\t  millisecs unless they specify the additional length.\n\t* ospf_interface.h: (struct ospf_interface) new interface param,\n\t  fast_hello.\n\t* ospf_interface.c: (ospf_if_table_lookup) add brackets,\n\t  gcc warning fix.\n\t  (ospf_new_if_params) Initialise fast_hello param.\n\t  (ospf_free_if_params) Check whether fast_hello is configured.\n\t  (ospf_if_new_hook) set fast_hello to default.\n\t* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to\n\t  prevent funny side-effects from its if statement when this\n\t  macro is used conditionally by other macros.\n\t  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.\n\t  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according\n\t  to whether fast_hello is set.\n\t* ospf_ism.c: Update all setting of the hello timer to use\n\t  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The\n\t  former is used when hello is to be sent immediately.\n\t* ospf_nsm.c: ditto\n\t* ospf_packet.c: (ospf_hello) hello-interval is not checked\n\t  for mismatch if fast_hello is set.\n\t  (ospf_read) Annoying nit, fix \"no ospf_interface\" to be debug\n\t  rather than a warning, as it can be perfectly normal to\n\t  receive packets when logical subnets are used.\n\t  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are\n\t  configured.\n\t* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying\n\t  nit, don\u0027t vty_out if this command is given, it gets tired\n\t  quick.\n\t  (show_ip_ospf_interface_sub) Print the hello-interval\n\t  according to whether fast-hello is set or not.\n\t  Print the extra 5 millisec characters from (ospf_timer_dump)\n\t  if fast-hello is configured.\n\t  (ospf_vty_dead_interval_set) new function, common to all\n\t  forms of dead-interval command, to set dead-interval and\n\t  fast-hello correctly. If a dead-interval is given, unset\n\t  fast-hello, else if a hello-multiplier is set, set\n          dead-interval to 1 and fast-hello to given multiplier.\n\t  (ip_ospf_dead_interval_addr_cmd) use\n\t  ospf_vty_dead_interval_set().\n\t  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.\n\t  (no_ip_ospf_dead_interval) Unset fast-hello.\n\t  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval\n\t  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not\n\t  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.\n\t  (config_write_interface) Write out fast-hello.\n\t  (ospf_config_write) Write a comment about\n\t  \"auto-cost reference-bandwidth\" having to be equal on all\n\t  routers. Hopefully just as noticeable as old practice of\n\t  writing to vty, but less annoying.\n\t  (ospf_vty_if_init) install the two new dead-interval\n\t  commands.\n\t* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL\n\t  and OSPF_FAST_HELLO_DEFAULT.\n"
    },
    {
      "commit": "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": "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": "d57834f6e5f060924b92b9544070ecf5f145848a",
      "tree": "25f7312efa2f711b2ebf1b17521e0aea9d83c10f",
      "parents": [
        "e37821068873e4256a5d44d6c81babe39befc8e7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 12 20:04:22 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jul 12 20:04:22 2005 +0000"
      },
      "message": "2005-07-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospfd.h: add OSPF_ABR_DEFAULT for convenience, make\n\t  OSPF_ABR_CISCO be the default ABR type.\n\t* ospfd.c: (ospf_new) initialise abr_type to OSPF_ABR_DEFAULT\n\t* ospf_vty.c: (no_ospf_abr_type_cmd) add standard as a negatable\n\t  abr_type. default abr_type should be OSPF_ABR_DEFAULT.\n\t  (ospf_config_write) test whether default abr_type against\n\t  OSPF_ABR_DEFAULT, rather than any specific ABR_TYPE.\n"
    },
    {
      "commit": "4dadc291e56195886fd047690ded9686f4e013fa",
      "tree": "ea7c0690912d2b7d0c487f6855960e768fff1b6e",
      "parents": [
        "69e10adaf28d4e116c38db2648786557fe131828"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:37:42 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) extern and static qualifiers added.\n          unspecified arguments in definitions fixed, typically they should\n          be \u0027void\u0027.\n          function casts added for callbacks.\n          Guards added to headers which lacked them.\n          Proper headers included rather than relying on incomplete\n          definitions.\n          gcc noreturn function attribute where appropriate.\n        * ospf_opaque.c: remove the private definition of ospf_lsa\u0027s\n          ospf_lsa_refresh_delay.\n        * ospf_lsa.h: export ospf_lsa_refresh_delay\n        * ospf_packet.c: (ospf_make_md5_digest) make *auth_key const,\n          correct thing to do - removes need for the casts later.\n        * ospf_vty.c: Use vty.h\u0027s VTY_GET_INTEGER rather than ospf_vty\u0027s\n          home-brewed versions, shuts up several warnings.\n        * ospf_vty.h: remove VTY_GET_UINT32. VTY_GET_IPV4_ADDRESS and\n          VTY_GET_IPV4_PREFIX moved to lib/vty.h.\n        * ospf_zebra.c: (ospf_distribute_list_update_timer) hacky\n          overloading of the THREAD_ARG pointer should at least use\n          uintptr_t.\n"
    },
    {
      "commit": "343f5cc76922c8c741a47d1ae9646fcf263d32d7",
      "tree": "dd82bdb7e7ab441fcbf66d27ea10bc4007857012",
      "parents": [
        "7cee1bb15089e4e994958651bd45a6f81c4215aa"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "message": "\t* ospfd.h: Include log.h, fixes compile with gcc-4.0.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "5c33349b3efff36a6acd36c6600b61e7cc2dbffc",
      "tree": "ec55763c7a1401489464bacde9115b06b3b0b467",
      "parents": [
        "9fc7ebf10b7bb638ddf6d1b4b2d562dd417866fc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "message": "2005-02-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.h: Add new field struct stream *ibuf to struct ospf.\n\t* ospfd.c: (ospf_new) Check return code from ospf_sock_init.\n\t  Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).\n\t  (ospf_finish) Call stream_free(ospf-\u003eibuf.\n\t* ospf_packet.c: (ospf_read) Call stream_reset(ospf-\u003eibuf) and then\n\t  pass it to ospf_recv_packet for use in receiving the packet\n\t  (instead of allocating a new stream for each packet received).\n\t  Eliminate all calls to stream_free(ibuf).\n\t  (ospf_recv_packet) The struct stream *ibuf is now passed in as\n\t  an argument.  No need to use recvfrom to peek at the packet\n\t  header (to see how big it is), just use ospf-\u003eibuf which is\n\t  always large enough (this eliminates a system call to recvfrom).\n\t  Therefore, no need to allocate a stream just for this packet,\n\t  and no need to free it when done.\n"
    },
    {
      "commit": "6c83567192ada1a66822c3f35580ce6a85f51ac9",
      "tree": "39ef09859fae79b7c7e234a671bf2e04f8e9264a",
      "parents": [
        "6b33361187feeb8c9c257ec149b4f75238af6c48"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:00:30 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:00:30 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global) Const char update and signed/unsigned fixes.\n\t* (various headers) size defines should be unsigned.\n\t* ospf_interface.h: remove duplicated defines, include the\n\t  authoritative header - though, these defines should probably\n          be moved to a dedicated header, or ospfd.h.\n\t* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.\n\t* ospf_packet.c: (ospf_write) cast result of shift to unsigned.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "beebba75167b33e05b5e02a41179ad0c13a0bcd7",
      "tree": "83b72a338e29f7f6cff2b83fd2c71e8615f9f8e5",
      "parents": [
        "320ec10a24d8dd81d0aa011dc92e07877e4e02f8"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jun 20 21:00:27 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Jun 20 21:00:27 2004 +0000"
      },
      "message": "Remove ifdef\u0027s HAVE_NSSA. NSSA support is stable enough.\n"
    },
    {
      "commit": "d4a53d583c56462864b2fce08b1cf94493c041ab",
      "tree": "d43535a754e3474669bdddc7e463c2146bdc25d3",
      "parents": [
        "22e0a9e6c7bd7775da6bfb00d9a4114643cf9369"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jul 12 21:30:57 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jul 12 21:30:57 2003 +0000"
      },
      "message": "2003-07-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (global): Add/fixup NSSA ABR translation functionality\n\t* ospfd.h: Adjust the NSSA ROLE defines. Rename STATE to TRANSLATE.\n\t  Rename the LSA_NSSA_GET define to LSA_OPTIONS_NSSA_GET.\n\t* ospfd.c: Adjust to match changes to ospfd.h\n\t* ospf_te.c: Adjust to match change to LSA_NSSA_GET.\n\t* ospf_lsa.h: slights reformatting.\n\t  Add new NSSA functions, ospf_translated_nssa_compare() (not\n\t  currently used), ospf_translated_nssa_refresh() and\n\t  ospf_translated_nssa_originate().\n\t* ospf_lsa.c: Implemented aforementioned new functions. Fix up\n\t  several NSSA hooks to /not/ be called for Type-5s which are\n\t  translated. Add additional hooks. Set the ROUTER_LSA_NT bit in\n\t  router-lsa flags if ABR does translation. New function,\n\t  ospf_lsa_translated_nssa_new() implemented. Dont register\n\t  translated LSAs for refreshing - instead we implicitly rely on\n\t  the ASBR refreshing the Type-7, and refresh the translated Type-5\n\t  at the same time. Some minor reformatting. Extra debug info added.\n\t  Also, existing debug statements modified to report LSA Id.\n\t* ospf_flood.c: call ospf_translated_nssa_refresh() when refreshing\n\t  Type-7. minor reformatting.\n\t* ospf_dump.c: Dump NSSA LSAs.\n\t* ospf_asbr.h: slight reformatting. Export\n\t  ospf_external_route_lookup() (though, not used. probably will\n          undo this).\n        * ospf_abr.c: Slight reformatting in many places. Update to match\n          ospfd.h changes.\n          (ospf_abr_translate_nssa): make it work, using the new ospf_lsa\n\t  translation functions.\n\t  (Several places): change struct prefix * to struct prefix_ipv4 *.\n\t  (might as well do the casts at higher levels). Add more debug\n\t  info.\n\t  (ospf_abr_announce_stub_defaults): announce default to NSSA areas\n\t  too.\n\t  (ospf_abr_announce_nssa_defaults): do nothing. this function\n          probably should die. (see ospf_abr_announce_stub_defaults).\n\t  (ospf_abr_task_timer): run NSSA tasks.\n"
    },
    {
      "commit": "464c82043a47791b75ab949367d5d4f32e67ac13",
      "tree": "576b837b2de24ae007fe180962a1008cd4baba0c",
      "parents": [
        "6d1fab634182777b1316fd3dc898bbd035b889c7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Jun 22 08:32:35 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Jun 22 08:32:35 2003 +0000"
      },
      "message": "2003-06-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd.h (struct ospf_area): remove NSSATranslator. Add\n\t  NSSATranslatorState and NSSATranslatorStabilityInterval (currently\n\t  not used).\n\t  (global): add OSPF_NSSA_TRANS_STABLE_DEFAULT, default for\n\t  NSSATranslatorStabilityInterval. Update the LSA_NSSA_GET to\n\t  reflect struct ospf_area changes.\n"
    },
    {
      "commit": "800d61556cf73b51f90e2fe7e31a52d2c587a95d",
      "tree": "a7e3b07a7f3064a65b251107fcafb02e8a82744a",
      "parents": [
        "9bca8ebc4fcc369ad17b9a8caf8b14e62ad87e4a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 29 17:26:24 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu May 29 17:26:24 2003 +0000"
      },
      "message": "ospfd/ospfd.h: Change delay and holdtime to 1s. More appropriate values for\nthe class of machines which zebra runs on than the original defaults which\nwere taken from IOS (and even IOS uses much lower times these days). Lower\nvalues greatly help with convergence.\n\nIdeally, we\u0027d use even lower times, but thread_add_timer() api will need to\nbe modified to use milliseconds. (eg JunOS uses 100ms for delay, and 700ms\nfor hold time, iirc from Hasso).\n"
    },
    {
      "commit": "23bd12c31d701376d45ab45aa8c838e9fb5e409c",
      "tree": "d8d6b789194b372dcf067bc1bc5169f0ff284e8d",
      "parents": [
        "3a6440d756863b602cfaaf0259b71950e67b2a6e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 07 06:11:09 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Apr 07 06:11:09 2003 +0000"
      },
      "message": "[zebra 18626] move zebra socket paths to configure.ac\n\nmoved definition of the various socket paths from the\nper daemon header files into configure.ac. it will set the paths to\nbe in the directory specified by --localstatedir\u003d\u003cprefix\u003e or\notherwise will try to guess as best it can ( a la pid file path\ndetection - which probably should try reference ${prefix} too).\n\nthe present hardcoded socket path, /tmp, isnt really correct. should\nbe in /var somewhere really.\n"
    },
    {
      "commit": "020709f9939c542e96b12f06522ad5e33d8cf445",
      "tree": "767b3cb9a8a17913d8395c8d5ecf7485ae882b8e",
      "parents": [
        "d18258304a79b459fe768e63f27efd17aa1fa78f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 04 02:44:16 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Apr 04 02:44:16 2003 +0000"
      },
      "message": "2003-04-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * Sync to Zebra CVS\n        * Fix lib/thread.h leak\n        * Fix small Opaque LSA leak\n        * Do not configure OSPF interfaces for secondary addresses\n        * vtysh fixes from Hasso\n        * Dave Watson\u0027s missing ntohs fix\n"
    },
    {
      "commit": "6898008484a562ff5bae178a6fb0bd885fe8b1e5",
      "tree": "27797ca6532ca0ef85f538ac8f3070639e579229",
      "parents": [
        "1ef74ef70bdab672458c4d1e4cea24197066c0af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 25 05:07:42 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 25 05:07:42 2003 +0000"
      },
      "message": "2003-03-25 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sync to latest zebra CVS\n\t* spec file: updated and added define for ospf-api/client\n\nNB: OSPF-API has been broken by the zebra.org changes, which\nhas added struct ospf * as a new arg to many functions\n"
    },
    {
      "commit": "570f7598ebf2e2107ac9976d4d9def22072c5b02",
      "tree": "bc8a497e0310d53bd30342f8899758ba1162afb3",
      "parents": [
        "e3d29b5f9e68447a09dec7215f9ad75d3cc17a0a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jan 25 06:47:41 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Jan 25 06:47:41 2003 +0000"
      },
      "message": "Paul Jakma:\n[zebra 17352] ospf network matching (aka need for peer /32 for PtP)\nchange behaviour of network \u003cprefix\u003e area N statement wrt to PtP.\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
