)]}'
{
  "commit": "8a667cf7c58a065bcd6371f4ad6f25bfb084181c",
  "tree": "59ee7f3ad6e24f64e8c7c57ddaa3a6b8a4b97f5f",
  "parents": [
    "738bce789a393efe2d3f35fd541cf149dd7f9311"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul@quagga.net",
    "time": "Thu Aug 27 16:51:42 2009 +0100"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul@quagga.net",
    "time": "Tue Oct 27 10:59:28 2015 +0000"
  },
  "message": "ospfd: Extend \u0027ip ospf area\u0027 to take address argument + rationalise ospf enable\n\n* ospfd.c: (general) Clean up the whole running of OSPF on interfaces.\n  (add_ospf_interface) taking (struct interface *) arg is pointless here.\n  (ospf_is_ready) new helper.\n  (ospf_network_run_subnet) Put all the code for choosing whether to enable\n  OSPF on a subnet, and if so which area configuration to use, here. If a\n  subnet should not be enabled, ensure an existing oi is freed.\n  (ospf_network_run_interface) Just call run_subnet for all subnets on an\n  interface.\n  (ospf_network_run) Just call run_interface for all interfaces.\n  (ospf_if_update) Just call run_interface for the given interface.\n  (ospf_network_unset) Just call run_subnet for existing ois.\n  (ospf_update_interface_area) helper: update area on an oi, or create it.\n  (ospf_interface_set) renamed to ospf_interface_area_set for clarity.\n  Ensures OSPF is created, then into if_update.\n  (ospf_interface_unset) renamed to ospf_interface_area_unset and collapses\n  down to simple loop to call run_subnet for all ois.\n* ospf_interface.h: add a more general OSPF_IF_PARAM_IS_SET, which does the\n  right thing and takes default config into account.\n* ospf_vty.c: (OSPF_VTY_GET_IF_PARAMS) new macro with common code for handling\n  interface parameter commands - only used for \u0027ip ospf area\u0027 in this commit.\n  (OSPF_VTY_PARAM_UNSET) similar\n  ({no,}ip_ospf_area) Use said macros.\n* doc/ospfd.texi: add \u0027ip ospf area\u0027 command.\n\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "856a2ba05fe8a8d1509a4b496ff566e0c7977e43",
      "old_mode": 33188,
      "old_path": "doc/ospfd.texi",
      "new_id": "7ddc9db8e9d4de8eab8163cf5911d20bfc609554",
      "new_mode": 33188,
      "new_path": "doc/ospfd.texi"
    },
    {
      "type": "modify",
      "old_id": "a437bfbe3b8995a8ca739a6012168cb027e9400f",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_interface.h",
      "new_id": "2ed426f97940ea0546e59e3f65750642d3c2dd6e",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_interface.h"
    },
    {
      "type": "modify",
      "old_id": "dd4d312766c5139f8572db8dd0f9298b61114dcc",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_vty.c",
      "new_id": "45a19c0965ccef838409d8ff5e4eb72fd38c0b63",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_vty.c"
    },
    {
      "type": "modify",
      "old_id": "f6669d7f5590c3b3c75f0113d335b5976e8ee61c",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.c",
      "new_id": "c317ed87c45a28cfed677f3da2197290d555b763",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.c"
    },
    {
      "type": "modify",
      "old_id": "c50e615ff325738e0ae97a1108004d9c6954dea4",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.h",
      "new_id": "595c04f615727ef2e0391d0cd1c6282a924eb039",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.h"
    }
  ]
}
