)]}'
{
  "commit": "55cfa2f190620f7c711944637659bc208970324d",
  "tree": "13e8a607e6e552da0f4218b4a8473dbcd738845b",
  "parents": [
    "c99f3481a598e9cadd1de96714f6b5df9ad85c4a"
  ],
  "author": {
    "name": "Feng Lu",
    "email": "lu.feng@6wind.com",
    "time": "Thu Jul 03 18:24:34 2014 +0800"
  },
  "committer": {
    "name": "Nicolas Dichtel",
    "email": "nicolas.dichtel@6wind.com",
    "time": "Wed Jun 03 17:26:27 2015 +0200"
  },
  "message": "lib, vtysh: support multiple VRFs by using linux netns\n\nWe realize VRFs with linux netns by default. The main job is\nto associate a VRF with a netns. Currently this is done by\nthe configuration:\n\n  [no] vrf N netns \u003cnetns-name\u003e\n\nThis command is also available in vtysh and goes to only\nzebra, because presently only zebra supports multiple VRF.\n\nA file descriptor is added to \"struct vrf\". This is for the\nassociated netns file. Once the command \"vrf N netns NAME\"\nis executed, the specified file is opened and the file\ndescriptor is stored in the VRF N. In this way the\nassociation is formed.\n\nIn vrf_socket(), we first switch to the specified VRF by\nusing the stored file descriptor, and then can allocate\na socket which is working in the associated netns.\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\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f68d86fc4f07b907c4f194dc413afce06e41fee8",
      "old_mode": 33261,
      "old_path": "configure.ac",
      "new_id": "6da65f34d66dc5b75555e08dcf09f95bf1d1fdbe",
      "new_mode": 33261,
      "new_path": "configure.ac"
    },
    {
      "type": "modify",
      "old_id": "a36a524a048fd7693a22235615954061641c955b",
      "old_mode": 33188,
      "old_path": "lib/command.h",
      "new_id": "bb0122fa4d5f374b9e93023d2675258debbce28a",
      "new_mode": 33188,
      "new_path": "lib/command.h"
    },
    {
      "type": "modify",
      "old_id": "683026e5c069dcc7ee983593f5edaa6fc6b1b428",
      "old_mode": 33188,
      "old_path": "lib/vrf.c",
      "new_id": "89653a8bb61544e6dff210bfb069e545bb80631f",
      "new_mode": 33188,
      "new_path": "lib/vrf.c"
    },
    {
      "type": "modify",
      "old_id": "d1ff69b9c96a9e81ccad905c08d1c1e4c0fe23f9",
      "old_mode": 33188,
      "old_path": "vtysh/Makefile.am",
      "new_id": "850b505e5d620770403bb34b42913169176f91cd",
      "new_mode": 33188,
      "new_path": "vtysh/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "f057e24922e1f84d901ef16a7c8be081cc0bfc7b",
      "old_mode": 33261,
      "old_path": "vtysh/extract.pl.in",
      "new_id": "aa90be4a19b192b26c2e420a0e8bf4038131b37d",
      "new_mode": 33261,
      "new_path": "vtysh/extract.pl.in"
    }
  ]
}
