)]}'
{
  "commit": "c81ee5c94f5b34375f3ef276fdb9bde9098e7ecb",
  "tree": "dad1ab0d81b72a7c7a869bc7dc051b703deec9be",
  "parents": [
    "7b92589c225ae46417fc3fa0714a1b6f53f19c51"
  ],
  "author": {
    "name": "Joakim Tjernlund",
    "email": "Joakim.Tjernlund@transmode.se",
    "time": "Sat Jul 07 17:06:11 2012 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Wed Jul 25 18:07:30 2012 +0200"
  },
  "message": "ospfd: Optimize and improve SPF nexthop calculation\n\nMaintain router LSA positions in OSPF interface.\nFind the OSPF interface in nexthop_calculation using\nthe position in the router LSA. This is possible because\nthe only time nexthop_calculation needs to look up interfaces\nis when dealing with its own Router LSA.\n\nThis has the following advantages:\n - Multiple PtP interfaces with the same IP address between two routers.\n - Use Unnumbered PtP on just one end of the link.\n - Faster OI lookup for the OSPF interface and only\n   done once for PtoP links.\n\n*ospf_interface.h: (struct ospf_interface) Add storage for\n\t\t   storing router LSA position.\n\n*ospf_interface.c: (ospf_if_lookup_by_lsa_pos)\n\t\t   lookup OSPF I/F in an area using LSA position.\n\n*ospf_lsa.c: (router_lsa_link_set) record Router LSA position.\n\n*ospf_spf.c: (ospf_spf_next) Count and pass along lsa position.\n\t     (ospf_nexthop_calculation) Add lsa position argument.\n\t     call ospf_if_lookup_by_lsa_pos() for OSFP interface handle.\n\t     Clean up and remove all calls ospf_if_is_configured() the\n\t     rest. Adjust a few debug logs.\n\nSigned-off-by: Joakim Tjernlund \u003cJoakim.Tjernlund@transmode.se\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dc0787d562753aa23df6e1e1ea1d325eaf17a880",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_interface.c",
      "new_id": "a37dde12e2b8da8a49025fb312a3e7b5c7655fe0",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_interface.c"
    },
    {
      "type": "modify",
      "old_id": "6db887738bd9429c48e5ffed448882724e725f64",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_interface.h",
      "new_id": "9de655076bdf0e51cc59fd48a37d50da04e55393",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_interface.h"
    },
    {
      "type": "modify",
      "old_id": "d5959eb11b80c2a1d963281be1835a8d8be24684",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsa.c",
      "new_id": "493209a0bbfe75db25aa04eb05496c73fd3f5363",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsa.c"
    },
    {
      "type": "modify",
      "old_id": "974875ebcbb8de57facadf998e8d70efd2ff8130",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_spf.c",
      "new_id": "26fe4851b38454cfe5fafefb657e7d1a7d7462a8",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_spf.c"
    }
  ]
}
