)]}'
{
  "commit": "b40d939b477a08d79dbee947aea42ac652090f85",
  "tree": "fe160cd4514218baea57c2566e318fc66ea9a6ef",
  "parents": [
    "bb5b7552cc4f067fbb25f7a8f0c4fe558a508f3f"
  ],
  "author": {
    "name": "paul",
    "email": "paul",
    "time": "Mon Aug 22 22:34:41 2005 +0000"
  },
  "committer": {
    "name": "paul",
    "email": "paul",
    "time": "Mon Aug 22 22:34:41 2005 +0000"
  },
  "message": "2005-08-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.h: (struct bgp_info) add a new flag, BGP_INFO_REMOVED.\n\t  BGP_INFO_VALID is already overloaded, don\u0027t care to do same thing\n\t  to STALE or HISTORY.\n\t* bgpd.h: (BGP_INFO_HOLDDOWN) Add INFO_REMOVED to the macro, as a\n\t  route which should generally be ignored.\n\t* bgp_route.c: (bgp_info_delete) Just set the REMOVE flag, rather\n\t  than doing actual work, so that bgp_process (called directly,\n\t  or indirectly via the scanner) can catch withdrawn routes.\n\t  (bgp_info_reap) Actually remove the route, what bgp_info_delete\n\t  used to do, only for use by bgp_process.\n\t  (bgp_best_selection) reap any REMOVED routes, other than the old\n\t  selected route.\n\t  (bgp_process_rsclient) reap the old-selected route, if appropriate\n\t  (bgp_process_main) ditto\n\t  (bgp_rib_withdraw, bgp_rib_remove) make them more consistent with\n\t  each other. Don\u0027t play games with the VALID flag, bgp_process\n\t  is async now, so it didn\u0027t make a difference anyway.\n\t  Remove the \u0027force\u0027 argument from bgp_rib_withdraw, withdraw+force\n\t  is equivalent to bgp_rib_remove. Update all its callers.\n\t  (bgp_update_rsclient) bgp_rib_withdraw and force set is same as\n\t  bgp_rib_remove.\n\t  (route_vty_short_status_out) new helper to print the leading\n\t  route-status string used in many command outputs. Consolidate.\n\t  (route_vty_out, route_vty_out_tag, damp_route_vty_out,\n\t   flap_route_vty_out) use route_vty_short_status_out rather than\n\t  duplicate.\n\t  (route_vty_out_detail) print state of REMOVED flag.\n\t  (BGP_SHOW_SCODE_HEADER) update for Removed flag.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "85388304e212edeb69e2fd85d266a5ab2d2e3790",
      "old_mode": 33188,
      "old_path": "bgpd/ChangeLog",
      "new_id": "7fbc79c8406d3f0824e8eb7d1f8d13b063a70486",
      "new_mode": 33188,
      "new_path": "bgpd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "93074abbcad4ae96a82825acd1dc832f151607d3",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.c",
      "new_id": "862fd4333e60e7270680fe9d5e68eedab1ba21a2",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.c"
    },
    {
      "type": "modify",
      "old_id": "8d63e4606f3b92e98f7bd858f7c5a74ab7dffd3f",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.h",
      "new_id": "aa2c59ec9d95a91ff852ad1261244fd32e765686",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.h"
    },
    {
      "type": "modify",
      "old_id": "e2e2b47fcdcc3d3207a54884917afe5b62bdbf05",
      "old_mode": 33188,
      "old_path": "bgpd/bgpd.h",
      "new_id": "c04d0dc9007e6c9b028dd2f57c77cbdb26ba4950",
      "new_mode": 33188,
      "new_path": "bgpd/bgpd.h"
    }
  ]
}
