)]}'
{
  "commit": "fb982c25aa771b7c7425a3c3cce0a2cda0a715de",
  "tree": "74aa4dc86b04365d90a1030682796421b0eff011",
  "parents": [
    "5921ef9aae3b5d6ff8663298f649fb9d76594acd"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Fri May 04 20:15:47 2007 +0000"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul.jakma@sun.com",
    "time": "Fri May 04 20:15:47 2007 +0000"
  },
  "message": "[bgpd] Trim memory usage of BGP routes\n\n2007-05-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.h: (struct info) Move less frequently used\n\t  fields to a lazily allocated struct info_extra.\n\t  Export bgp_info_extra_get\n\t* bgp_route.c: (bgp_info_extra_new) allocate extra\n\t  (bgp_info_extra_free) Free damp info and the info_extra.\n\t  (bgp_info_extra_get) Retrieve the info_extra of a struct\n\t  info, allocating as required.\n\t  (generally) adjust to use info-\u003eextra\n\t* bgp_damp.c: (generally) use bgp_info_extra_get to access\n\t  dampinfo\n\t* bgp_attr.h: Move rarely allocated attributes from struct attr\n\t  to a struct attr_extra, for a substantial saving in size of\n\t  struct attr.\n\t* bgp_attr.c: (bgp_attr_extra_{new,free}), new, self-explanatory.\n\t  (bgp_attr_extra_get) Get the attr_extra for a given struct\n\t  attr, allocating it if needs be.\n\t  (bgp_attr_dup) Shallow copy the struct attr and its attr_extra.\n\t  (generally) adjust to know about attr-\u003eextra.\n\t* bgp_debug.c: (bgp_dump_attr) ditto\n\t* bgp_vty.c: (show_bgp_memory) print attr and info extra sizes.\n\t* bgp_nexthop.c: (generally) adjust to know about attr-\u003eextra\n\t  and info-\u003eextra.\n\t* bgp_{packet,routemap,snmp,zebra}.c: ditto\n\t* lib/memtypes.c: Add MTYPE_ATTR_EXTRA and MTYPE_BGP_ROUTE_EXTRA\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d5822facf528e043f22f1b48a8866dbb5e1cd470",
      "old_mode": 33188,
      "old_path": "bgpd/ChangeLog",
      "new_id": "ed6064945de1eb2eeffd22ce77a2ff4e64e5f795",
      "new_mode": 33188,
      "new_path": "bgpd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "28f01609cb1c8f7c8a4403382f98911fb5ae3534",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.c",
      "new_id": "07c941300fc5edf26ec71fd972f1762ef163c641",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.c"
    },
    {
      "type": "modify",
      "old_id": "0734bc270314d6999f9ed9ad803748b8d1ad944f",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.h",
      "new_id": "ac14947f12dae51fc9c96715cd45b1716cc060e5",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.h"
    },
    {
      "type": "modify",
      "old_id": "8ba39b651c4487812be19c7377e42b2992592241",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_damp.c",
      "new_id": "5a7c9aaaac9fa052f0c939a6cab2ea7c76d75f8d",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_damp.c"
    },
    {
      "type": "modify",
      "old_id": "1986b35b3c3dd5f2e60cb898631526e218a9f66b",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_debug.c",
      "new_id": "60284a2d8c4cd6dd382c670dc96d2b439fdd5703",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_debug.c"
    },
    {
      "type": "modify",
      "old_id": "50ae74e45582d263efda1e441eeff6ee9e3f46cc",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_nexthop.c",
      "new_id": "4dd5d946340e6cff3c64325b3cf2ab04943d2677",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_nexthop.c"
    },
    {
      "type": "modify",
      "old_id": "9859e50babf0e772335d10d00b2914ec6aa0a9bf",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "2653201172a594d1d063ac5e59419de6c9b34214",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    },
    {
      "type": "modify",
      "old_id": "c33c596eec80937ef11cd762813b9173e5e62ab5",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.c",
      "new_id": "db0f3a74090319ac9b2e1418c245b90b4d4ae4bb",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.c"
    },
    {
      "type": "modify",
      "old_id": "b0c2fccf74652ee4e6cd3761bc7aaefebb9dffdd",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.h",
      "new_id": "c7eb8c6c640e64485d02781ea39d89387211c9d0",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.h"
    },
    {
      "type": "modify",
      "old_id": "806a50727ebd0a8643f2a76fc9191df5f4764a49",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_routemap.c",
      "new_id": "6a44c479615859ac93f0f07583a074f675566dec",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_routemap.c"
    },
    {
      "type": "modify",
      "old_id": "430521f1df340a7c0f087bb0b7b1530474dc637a",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_snmp.c",
      "new_id": "3d26890ebb3762dcd5936aeefee3e0026158187d",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_snmp.c"
    },
    {
      "type": "modify",
      "old_id": "b108164f3659850695fa73efd1ae419dc60ef7dd",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_vty.c",
      "new_id": "1e21c74f43d79242f938a100786b5b9f70194c4b",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_vty.c"
    },
    {
      "type": "modify",
      "old_id": "301c15b052fca98f14266725eb628e95b4838c52",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_zebra.c",
      "new_id": "0b6ab45a715e192b9cf45e7740be34634ccb81dd",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_zebra.c"
    },
    {
      "type": "modify",
      "old_id": "3787b68cbf048758aa590654e659e44e3b4eeab4",
      "old_mode": 33188,
      "old_path": "lib/ChangeLog",
      "new_id": "5666cbad7e4481891143b45436200d9ef40434cd",
      "new_mode": 33188,
      "new_path": "lib/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "5a685e0ee300064a77c3105a72f00ea4c9ec53aa",
      "old_mode": 33188,
      "old_path": "lib/memtypes.c",
      "new_id": "f1b10e71f60f1568f490491a9a8b92dabe3e505d",
      "new_mode": 33188,
      "new_path": "lib/memtypes.c"
    }
  ]
}
