)]}'
{
  "commit": "fa37b2f6135a532742ef8242e70dbf499abe8d95",
  "tree": "7aa0200f281e5b3a423e27d3fb20e43e6b8fd8be",
  "parents": [
    "0b26adbb8b42168d4fc5ef240b1e2730fcfd5c61"
  ],
  "author": {
    "name": "Erik Kline",
    "email": "ek@google.com",
    "time": "Tue Aug 02 18:27:03 2016 +0900"
  },
  "committer": {
    "name": "Erik Kline",
    "email": "ek@google.com",
    "time": "Tue Aug 09 19:19:43 2016 +0900"
  },
  "message": "Handle setting and deprecating local DNS IPv6 addresses\n\n[ IPv6TetheringCoordinator ]\n\n  - Send CMD_IPV6_TETHER_UPDATE to all TetherInterfaceStateMachines.\n\nThis results in some spurious noop messages, but currently\nthe coordinator does not maintain state about which downstream interaces\nare serving IPv6 and which are not.  Until it does maintain such state\nit does not know to notify only the affected interfaces about a loss of\nIPv6 upstream\n\n[ IPv6TetheringInterfaceServices ]\n\n    - De-dup incoming IPv6-only LinkProperties to avoid spurious updates\n      to the RA daemon.\n    - Keep track of new prefixes/dns and newly deprecated prefixes/dns\n      on each update.\n        - Set and remove local_network routes based on new and newly\n          deprecated prefixes.\n        - Set and remove local DNS server IP addresses based on new\n          and newly deprecated DNS servers. Update dnsmasq via netd\n          accordingly.\n    - Pass newly deprecated and new information to the RA daemon.\n\n[ RouterAdvertisementDaemon ]\n\n    - Receive newly deprecated prefixes/DNS and update local tracking\n      data structures accordingly.\n    - Properly send urgent final deprecation RAs, and then cease all\n      transmissions.\n\nBug: 30298058\nChange-Id: Idc821603fa93bff1a821d1180d4135bc70e4a08d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b6c8d5d87b4c4036c0e4c1aeb1bd06899cfef84d",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/connectivity/Tethering.java",
      "new_id": "e0d8373fc445a3409048d8973ce1bc49ecdbf993",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/connectivity/Tethering.java"
    },
    {
      "type": "modify",
      "old_id": "8254397863603191f99896cf723efcb7d3acf83e",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java",
      "new_id": "e94b584ac48aaebf3dd03b520210eeb459dea28e",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java"
    },
    {
      "type": "modify",
      "old_id": "b47e079395d821568cd2d586b7f88fd0154c891e",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java",
      "new_id": "d087f903560ac63fbefa94e307ae23ebe2da0642",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java"
    },
    {
      "type": "modify",
      "old_id": "1a9d2f23935ed3b2286da9090ee4d384a26a153e",
      "old_mode": 33188,
      "old_path": "services/net/java/android/net/ip/RouterAdvertisementDaemon.java",
      "new_id": "a52cdcc98b9cbe22da774a770852af05ca49a900",
      "new_mode": 33188,
      "new_path": "services/net/java/android/net/ip/RouterAdvertisementDaemon.java"
    }
  ]
}
