)]}'
{
  "commit": "41f44a23e86a65a5cad7e5e8cafd7e935f153232",
  "tree": "1fcffa568b188ae66e5f18df09f6960522dfe564",
  "parents": [
    "395828eea809e8b2b8c5824d3639cefedd7aa9f0"
  ],
  "author": {
    "name": "Feng Lu",
    "email": "lu.feng@6wind.com",
    "time": "Fri May 22 11:39:56 2015 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Tue Jun 02 06:58:12 2015 +0200"
  },
  "message": "lib, zebra: move \"struct vrf\" to be a lib module\n\nPreviously \"struct vrf\" is defined locally in zebra. Now it is moved\nto be a lib module.\n\nThis is the first step to support multi-VRF in quagga. The\nimplementation is splitted into small patches for the purpose of\neasy review.\n\n* lib:\n    \"struct vrf\" with basic members is defined in vrf.c. The member\n    \"void *info\" is for user data.\n\n    Some basic functions are defined in vrf.c for adding/deleting/\n    looking up a VRF, scanning the VRF table and initializing the\n    VRF module.\n\n    The type \"vrf_id_t\" is defined specificly for VRF ID.\n\n* zebra:\n    The previous \"struct vrf\" is re-defined as \"struct zebra_vrf\";\n    and previous \"vrf\" variables are renamed to \"zvrf\".\n\n    The previous \"struct vrf\" related functions are removed from\n    zbera_rib.c. New functions are defined to maintain the new\n    \"struct zebra_vrf\".\n\n    The names vrf_xxx are reserved for the functions in VRF module.\n    So:\n    - the previous vrf_table() are renamed to zebra_vrf_table();\n    - the previous vrf_static_table() are renamed to\n      zebra_vrf_static_table().\n\n    The main logic is not changed.\n\n    BTW: Add a statement to zebra_snmp.c telling that the SNMP is\n         running only for the MIBs in the default VRF.\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": "fc023123022d51abea3b57aa2e84d28845cbc795",
      "old_mode": 33188,
      "old_path": "lib/Makefile.am",
      "new_id": "ac51fc62522e4c9d9861f15c08339173cc01c283",
      "new_mode": 33188,
      "new_path": "lib/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "1a0c11fee342b4f88aa65284724fc0bd0984db1d",
      "old_mode": 33188,
      "old_path": "lib/memtypes.c",
      "new_id": "3e599f673238fc1236bd6b280180d59420f7e262",
      "new_mode": 33188,
      "new_path": "lib/memtypes.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ccbb99617e11f37dd26af0dfcc8d1494da7a2dd",
      "new_mode": 33188,
      "new_path": "lib/vrf.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e050994337ff6f22957671b34319edcf463a22d",
      "new_mode": 33188,
      "new_path": "lib/vrf.h"
    },
    {
      "type": "modify",
      "old_id": "a5ed20e402d2e449d46227da4cc6ad8114bf7837",
      "old_mode": 33188,
      "old_path": "lib/zebra.h",
      "new_id": "e88a6293de3a846cea1548b9b2f22af83f2a1910",
      "new_mode": 33188,
      "new_path": "lib/zebra.h"
    },
    {
      "type": "modify",
      "old_id": "d7f2a108b053e910fb5ac8d190f6d21b6f4a3be7",
      "old_mode": 33188,
      "old_path": "zebra/main.c",
      "new_id": "a690c9a197b49f78704299946e3e7d67136518f6",
      "new_mode": 33188,
      "new_path": "zebra/main.c"
    },
    {
      "type": "modify",
      "old_id": "94330aed24847c238e16888e5b751f023a867ff8",
      "old_mode": 33188,
      "old_path": "zebra/redistribute.c",
      "new_id": "8bf8ea8c091a4a49e822b911f2ca65ee1cecf3d6",
      "new_mode": 33188,
      "new_path": "zebra/redistribute.c"
    },
    {
      "type": "modify",
      "old_id": "94a74194fc252fd3524c112c431fed62956a768c",
      "old_mode": 33188,
      "old_path": "zebra/rib.h",
      "new_id": "802d875f8e4046a1d00829160cd67899faf37b4a",
      "new_mode": 33188,
      "new_path": "zebra/rib.h"
    },
    {
      "type": "modify",
      "old_id": "f98bb41995624549b842ef5f486595e8282b7e39",
      "old_mode": 33188,
      "old_path": "zebra/test_main.c",
      "new_id": "a92cd61896512bb41f4ca7498cc16cf2cbfaf3de",
      "new_mode": 33188,
      "new_path": "zebra/test_main.c"
    },
    {
      "type": "modify",
      "old_id": "896915c21c848d7b351f988f27a8015ea3f9a848",
      "old_mode": 33188,
      "old_path": "zebra/zebra_fpm.c",
      "new_id": "292dbb6389d76cbb6ecdf90140768c2e602bc5f2",
      "new_mode": 33188,
      "new_path": "zebra/zebra_fpm.c"
    },
    {
      "type": "modify",
      "old_id": "b5f2b76076508eb1038ccd72c3d798b003ebcdb8",
      "old_mode": 33188,
      "old_path": "zebra/zebra_fpm_netlink.c",
      "new_id": "c4a650d6e3809c41d7c29d2cd2f0407cee3a6972",
      "new_mode": 33188,
      "new_path": "zebra/zebra_fpm_netlink.c"
    },
    {
      "type": "modify",
      "old_id": "f247f1d29a2480878aebe951ffce4bd3b9ae8e8e",
      "old_mode": 33188,
      "old_path": "zebra/zebra_rib.c",
      "new_id": "f206205b080bcfdd7274677b3930eeb754f55652",
      "new_mode": 33188,
      "new_path": "zebra/zebra_rib.c"
    },
    {
      "type": "modify",
      "old_id": "f0d3e7e5825c30eafdc61aa0804511f3fde48580",
      "old_mode": 33188,
      "old_path": "zebra/zebra_snmp.c",
      "new_id": "3d005aa55abfa350a8525e669bb3c82a3e5e329f",
      "new_mode": 33188,
      "new_path": "zebra/zebra_snmp.c"
    },
    {
      "type": "modify",
      "old_id": "bc453de967feed4f8feae5c173fc8df54022ea51",
      "old_mode": 33188,
      "old_path": "zebra/zebra_vty.c",
      "new_id": "a4e6af78c8bfa7482c7bd8518a7df28189d1c8fc",
      "new_mode": 33188,
      "new_path": "zebra/zebra_vty.c"
    }
  ]
}
