)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "72412d74c2d5e355a8cd452662ee843611003d2b",
      "old_mode": 33188,
      "old_path": "ospfd/ChangeLog",
      "new_id": "fc0d599390298b5db1c6fcd56249b67c2c529112",
      "new_mode": 33188,
      "new_path": "ospfd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "a85667e6b08951596556d91fae7a1b80b7ac9985",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsa.c",
      "new_id": "31b9a4f19846a6e73464e920625164ad909ccf57",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsa.c"
    },
    {
      "type": "modify",
      "old_id": "5cf69c31a8eac630579f70b2c14dc1432407b863",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsa.h",
      "new_id": "42c08828335c580505b87d99658c07d8e8898c26",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsa.h"
    },
    {
      "type": "modify",
      "old_id": "483b638785981ac8492736495b064c90a39d74f0",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_main.c",
      "new_id": "3225d7d77313d524ad14f82a88bd51c171e17b57",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_main.c"
    },
    {
      "type": "modify",
      "old_id": "bdbdd03ea8184430ec98a7a1489d5fc42fc29bb2",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_route.c",
      "new_id": "5eedbd82e5cfb7605a18943fe2c99be366a637d2",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_route.c"
    },
    {
      "type": "modify",
      "old_id": "e56027be5a07841a0b2e7a4d0959c1c58e7ab40c",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_vty.c",
      "new_id": "c3cc4cb4db835ecbba649ad198a769d548837438",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_vty.c"
    },
    {
      "type": "modify",
      "old_id": "bf8ca4dcb046125f94379b03b6676b26122b1a6a",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.c",
      "new_id": "69f091d738ecdb26766ac6f40c0ef654a94c6a79",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.c"
    },
    {
      "type": "modify",
      "old_id": "38e56b6f5630632c2b150c600a6f7fa224cb5b9b",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.h",
      "new_id": "ed66ebf7ec5111a79eb18a306d7ee0a2e0fb5b80",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.h"
    }
  ]
}
