)]}'
{
  "commit": "5a5702fac5458d63d7a099c4db7ac387afefd2de",
  "tree": "0547fea145cb10fb9ed6d9493963d374556eb65f",
  "parents": [
    "126215c1238eb42cc92d23aefbe1fac3b204438f"
  ],
  "author": {
    "name": "Feng Lu",
    "email": "lu.feng@6wind.com",
    "time": "Fri May 22 11:39:59 2015 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Tue Jun 02 06:59:28 2015 +0200"
  },
  "message": "lib: move the interface list into \"struct vrf\"\n\nAn interface belongs to a specific VRF. So move the interface list\ninto the \"struct vrf\".\n\n* vrf.c/vrf.h:\n  - add a new member \"struct list *iflist\" to the the \"struct vrf\";\n  - call if_init() in vrf_new();\n  - call if_terminate() in vrf_delete();\n  - add utilities to access the interface list and VRF ID in the\n    specified VRF.\n\n* if.c/if.h:\n  - the global \"iflist\" now only exists for the default VRF;\n  - the global \"if_master\" is initialized on the definition;\n  - in if_create(), the interface is added into the list in the\n    specified VRF; if the VRF does not exist, create one;\n  - add parameters to if_init()/if_terminate() so that the\n    interface list in the VRF can be initialized/destroyed;\n  - in if_dump_all() scan the interfaces in all the VRFs;\n  - add a command \"show address vrf N\" to show addresses in a\n    specified VRF;\n  - add a command \"show address vrf all\" to show addresses in all\n    VRFs;\n  - new APIs ifxxx_vrf() are added to access an interface in a\n    specified VRF.\n\nThe old interface APIs (the global variable \"iflist\" and the API\nfunctions) are not changed to keep the backward compatibility.\nThe new APIs are used in the daemons which support multiple VRFs\n(till now only zebra).\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f17e50863049a13a989d246269f20d02234b3c01",
      "old_mode": 33188,
      "old_path": "lib/if.c",
      "new_id": "30da8a9b134cce0c87c9131bb9a8f64c23702dc9",
      "new_mode": 33188,
      "new_path": "lib/if.c"
    },
    {
      "type": "modify",
      "old_id": "029f57fd789837e253d3a55547d90f5e36a9b54f",
      "old_mode": 33188,
      "old_path": "lib/if.h",
      "new_id": "03bd521713cb6c25e0ceb19f0815f4d3899129ab",
      "new_mode": 33188,
      "new_path": "lib/if.h"
    },
    {
      "type": "modify",
      "old_id": "51f9e3795b8bda58a07f5c92f5e7a0795a7f0eac",
      "old_mode": 33188,
      "old_path": "lib/vrf.c",
      "new_id": "ea14fd3c68508f59b84c4fbc4809adc65bcc35f4",
      "new_mode": 33188,
      "new_path": "lib/vrf.c"
    },
    {
      "type": "modify",
      "old_id": "7e050994337ff6f22957671b34319edcf463a22d",
      "old_mode": 33188,
      "old_path": "lib/vrf.h",
      "new_id": "d7b799875b1ac09e30c3caa51ae55cb46503f72b",
      "new_mode": 33188,
      "new_path": "lib/vrf.h"
    }
  ]
}
