)]}'
{
  "commit": "49f76097fc191761db8482aa3bf6e6322c52c647",
  "tree": "c7aef97b17e3dd41b19fa53535ecf1a9ca8aafb9",
  "parents": [
    "267ceb2ce3adf4ce1357deb7ce48f151d6c58b92"
  ],
  "author": {
    "name": "Feng Lu",
    "email": "lu.feng@6wind.com",
    "time": "Fri May 22 11:40:10 2015 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Tue Jun 02 07:48:34 2015 +0200"
  },
  "message": "zebra: maintain RTADV per VRF\n\nThis moves the global variable \"rtadv\" into the \"struct zebra_vrf\",\nso that RTADV feature can work per VRF.\n\n* rtadv.c/rtadv.h:\n\n  Add a proper parameter to the functions so that the entity of the\n  \"struct zebra_vrf\" and interfaces can be obtained from the specified\n  VRF.\n\n  The old rtadv_init() is splitted into:\n  - rtadv_cmd_init(): it installs the RTADV commands; is called from\n                      main();\n  - new rtadv_init(): it creates the socket; is called from\n                      zebra_vrf_enable().\n\n  rtadv_terminate() is added to stop the threads, close the socket and\n  clear the counters. It is called from zebra_vrf_disable().\n\n  rtadv_make_socket() now calls vrf_socket() to create a socket in\n  the VRF.\n\n* interface.h and rib.h: define the macro RTADV.\n* main.c: according changes, refer to rtadv.c.\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": "0f081f6b368cf013c237d4dcc6ce22aea23eed21",
      "old_mode": 33188,
      "old_path": "zebra/interface.h",
      "new_id": "fe2460435a23f62779ce3bb482b301c3d3ea4226",
      "new_mode": 33188,
      "new_path": "zebra/interface.h"
    },
    {
      "type": "modify",
      "old_id": "1e9757b612cd19949a0272b48834744ccd9bfc07",
      "old_mode": 33188,
      "old_path": "zebra/main.c",
      "new_id": "08cc247d8a74d8a5405d15ed1338e3709f00c8db",
      "new_mode": 33188,
      "new_path": "zebra/main.c"
    },
    {
      "type": "modify",
      "old_id": "5663f30338458917cfd35abee44ace59faaed1a0",
      "old_mode": 33188,
      "old_path": "zebra/rib.h",
      "new_id": "99729411fc388486c63e9cf02c0f6b74d91c43c1",
      "new_mode": 33188,
      "new_path": "zebra/rib.h"
    },
    {
      "type": "modify",
      "old_id": "b3959823f1cd6607b12485eabfae17bbce5a8ea3",
      "old_mode": 33188,
      "old_path": "zebra/rtadv.c",
      "new_id": "be4aeb1b17f053fd1a6c9f2469a638965f4961f0",
      "new_mode": 33188,
      "new_path": "zebra/rtadv.c"
    },
    {
      "type": "modify",
      "old_id": "1e1aec9ac4f6e846f5a50f1d91d5fae24b82e60e",
      "old_mode": 33188,
      "old_path": "zebra/rtadv.h",
      "new_id": "76f98cf2c876da5e5f254db6d548981cb525182f",
      "new_mode": 33188,
      "new_path": "zebra/rtadv.h"
    }
  ]
}
