)]}'
{
  "log": [
    {
      "commit": "de8eac9ae1579127d8c5cdf15eaaa7e51140809a",
      "tree": "acbbe939f73560c6f7fa5b4ac6cc2814d4b592d4",
      "parents": [
        "67dcf6da3cb9d405117ef27e7362ef73cecbb123",
        "26025a06ecbd5e0fe8a034ec3aaf5e0146e208e1"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jul 05 05:20:25 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 05 05:20:25 2018 -0700"
      },
      "message": "Merge \"Always close file descriptors\"\nam: 26025a06ec\n\nChange-Id: Ib1d8f74832b8b649dc83de39f8f16651a9924e69\n"
    },
    {
      "commit": "725e8f6856481b14a5fe465eb8552ce7a837896a",
      "tree": "44c3da49ccdfac233d807c27bf764f9e45355a55",
      "parents": [
        "d004710e0e33e0b60b829146cc5147cacb064543"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Jul 04 17:57:51 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jul 05 15:23:40 2018 +0900"
      },
      "message": "Always close file descriptors\n\nEvery error thrown leaked a netlink NETFILTER socket.\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\n    - enabled tethering and tried to cause conntrack updates to sessions\n      that had expired (which causes ErrnoExceptions to be thrown)\n      while monitoring lsof for system_server\u0027s NETFILTER sockets\n\nBug: 32163131\nBug: 64976634\nBug: 110122306\n\nChange-Id: Ib52b812e8434c27ad9f2596666400c13e03c2216\n"
    },
    {
      "commit": "f415a67fc0c991b2d8fb22d298cdcda9525153e9",
      "tree": "a9892c5f56afb01dab92ce00d194ee594d82b664",
      "parents": [
        "b1c9efc6fa1f5fb660ccf22b0fb097481016de32",
        "9c69afc86f6f1ff469e91a83a3525911ba06828e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jun 05 03:16:47 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 05 03:16:47 2018 -0700"
      },
      "message": "Merge \"Randomize the local Wifi IPv4 address\" am: 13cb6084e2\nam: 9c69afc86f\n\nChange-Id: I47d75c32ccd4bcbbb2f05637fcbae216d7e15015\n"
    },
    {
      "commit": "0f27eed8f666e5ee38cea16b7feb2fd8e43c9b9e",
      "tree": "944ada4a11bd712e73db4c4e98186e57db7d36db",
      "parents": [
        "4d3b5c1d3beb7849548ba3d1aba162e6789958ce"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue May 29 19:24:43 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jun 05 15:56:55 2018 +0900"
      },
      "message": "Randomize the local Wifi IPv4 address\n\nAlso: address a few \"error prone\" warnings, adding @Override where missing\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes (with --no-hidden-api-checks)\n    - wifi tethering uses a randomized address, in as much as it can work\nBug: 32163131\nBug: 70673901\n\nChange-Id: Icfabc48f2cf97b362ce292747f47021e84b900da\n"
    },
    {
      "commit": "a5b35c7850eac1e7bec95c786554d360f6f55a8a",
      "tree": "d914c748650c7796f9e52403c2c8f912ca5bbca4",
      "parents": [
        "9217ae6feb89a48c4e76b00688e73470c6bebb39",
        "48b64fd9f2745ebf28431965102cfeb6caae44df"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jun 04 11:49:28 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 04 11:49:28 2018 -0700"
      },
      "message": "Merge \"Send empty LinkProperties when entering StoppedState.\" am: 59ccf1041f\nam: 48b64fd9f2\n\nChange-Id: Ib946351005140d59e6a559610aa7448ab19c2630\n"
    },
    {
      "commit": "c8cb0f71d2ad872773cd275e5a8d93190d56ee66",
      "tree": "51f525001ed5ac796075dbec6709dbffd71de986",
      "parents": [
        "f98f8a4c6c70ed459d04874796c5c0744100c8e8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Dec 11 14:24:08 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon May 28 17:51:24 2018 +0900"
      },
      "message": "Send empty LinkProperties when entering StoppedState.\n\nAdditionally, no longer try to transition from within a State\u0027s\nenter() method (this can encounter Log.wtf()s). Introduce some\nCMD_JUMP_* commands and use deferMessage().\n\nTest: as follows\n    - built, flashed, booted\n    - runtest -x IpClientTest passes\n    - basic DHCP wifi association works\nBug: 69800563\nBug: 70394432\nBug: 80284937\nChange-Id: I7ed6e1a994a3556af345e8a4dfb51c383f6d5478\n(cherry picked from commit ffacb517d40df8ebb52d5906fa844b20c6520cd8)\n"
    },
    {
      "commit": "b19a838f473d5313b7ae02984d60745de391e745",
      "tree": "daff107d3ba494c63c2448afb4d45be1e7794244",
      "parents": [
        "96dbac0c5cf4088d1b71ff4ff432bcc61f270087",
        "a6085d17caae6638e8afa2a6839d566a6f32a211"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri May 25 03:28:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 25 03:28:05 2018 +0000"
      },
      "message": "Merge \"Use AI_ADDRCONFIG for most DNS requests\""
    },
    {
      "commit": "a6085d17caae6638e8afa2a6839d566a6f32a211",
      "tree": "f5ecdd00def5843d2378a13813df5033176324e6",
      "parents": [
        "6fa8d06c78d21d455015e19691d5d6f2e6bd258b"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue May 22 18:20:51 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu May 24 11:42:05 2018 +0900"
      },
      "message": "Use AI_ADDRCONFIG for most DNS requests\n\nNot using it doubles the number of DNS lookups for single-stack\nnetworks.\nPrivate DNS hostname resolution still does not use this flag so that we\nget all address families in advance, in case of LinkProperties changes.\nBug: b/79811321\nTest: manual: Captive portal, 464xlat, networking in apps working\nMerged-In: I7037342a93dc48b8e0988e719b9a9a2d5055bcf2\nMerged-In: I8ca15fa079cd5ff94e4d9f7e0476504769f9708f\n(Clean cherry-pick of pi-dev Ib46756e5e5f8d8d2698c90c5183c368d2d44be7a)\n\nChange-Id: Iedb7a9c5f9caeb66de4505189fca8db91013d844\n"
    },
    {
      "commit": "37bef2a4e300e99cc42a5d4a8059a6df2d1ad532",
      "tree": "6ee33a0c6b0147534f1c75988815ed1ebb54cf9c",
      "parents": [
        "167b451daa1893ee9b15cb25bfba627a7254acd3"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue May 22 18:20:51 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed May 23 12:49:06 2018 +0900"
      },
      "message": "Use AI_ADDRCONFIG for most DNS requests\n\nNot using it doubles the number of DNS lookups for single-stack\nnetworks.\nPrivate DNS hostname resolution still does not use this flag so that we\nget all address families in advance, in case of LinkProperties changes.\nBug: b/79811321\nTest: manual: Captive portal, 464xlat, networking in apps working\n\nChange-Id: Ib46756e5e5f8d8d2698c90c5183c368d2d44be7a\n"
    },
    {
      "commit": "ab30db7072968016c1be0bb384385fd7235ae815",
      "tree": "a077e36b5b22abebbc386985ad05f8ca4678dbe3",
      "parents": [
        "40b43542c1845f80de07f0b2b391ad4bdaa82129"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue Apr 24 01:25:42 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue May 15 14:21:54 2018 +0900"
      },
      "message": "apf: Add counters for dropped / passed packets\n\nApfFilter maintains separate counters for each reason why a packet was\npassed or dropped by the filter logic.\n\nThere\u0027s also a total which should match the individual counters,\n*unless* the APF interpreter aborted execution early due to an illegal\ninstruction or an out-of-bounds access.\n\nTest: both on APFv2 and APFv4-capable device:\n\truntest -x tests/net/java/android/net/ip/IpClientTest.java\n\truntest -x tests/net/java/android/net/apf/ApfTest.java\n\tmanual tests connected to an AP\nBug: 73804303\nChange-Id: I54b17fcbb95dfaea5db975d282314ce73d79d6ec\nMerged-In: I54b17fcbb95dfaea5db975d282314ce73d79d6ec\n(cherry picked from commit 3cc40ea6c50c976dd4e6485574a8be899867f610)\n"
    },
    {
      "commit": "40b43542c1845f80de07f0b2b391ad4bdaa82129",
      "tree": "84da4ec1edadb172932c00c29e46526e2bd179de",
      "parents": [
        "7e8c166d8e1ad7adbfa6e002bdcb16e6df629a0c"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 16 20:15:12 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue May 15 14:21:30 2018 +0900"
      },
      "message": "Add support for reading a snapshot of the APF data\n\nNo functional change yet, since startReadPacketFilter() has no callers\nat this time.  In the future, this new hook will be used to take\nperiodic snapshots of the APF memory (for instance, when the device\nwakes up).\n\nDesign note: WifiStateMachine grabs the APF data synchronously\nfrom another thread, but then the data snapshot is delivered to IpClient\nvia an asynchronous reply, following the same pattern used by other\ncommands. This means that there\u0027s no (practical) way for IpClient to\nread the APF data just before replacing the APF program.\n\nEven with this limitation, it\u0027s still possible to reliably decode packet\ncounters and compute deltas relative to the last snapshot, provided that\nthe address range isn\u0027t cleared when installing a new APF filter.\n\nBug: 73804303\nTest: Manual - called the new code and inspected \u0027dumpsys wifi\u0027 output.\nChange-Id: Ia0923d71cf3ee4128fb1c381557316300adac1a3\nMerged-In: Ia0923d71cf3ee4128fb1c381557316300adac1a3\nMerged-In: I3b940f5a3b795f85d244882eaa7eca56bd9e167d\nMerged-In: I283fd5fb71f8a679911e58c487a4ac12a5190049\n(cherry picked from commit bb2193bf5877b7a93aebefdb74a8c7f410a17907)\n"
    },
    {
      "commit": "8d65db32eba568be3df36247e02ee32f5284e89a",
      "tree": "361e25ab37a660e72600477f46dd55a5b5612aa3",
      "parents": [
        "f687efc4553658867998c9f9fa072b3baad6385b"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Wed May 09 17:58:50 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu May 10 22:59:22 2018 +0900"
      },
      "message": "Disable APF memory clear on pre-APFv4 devices\n\nFixes a system crash on HU when connecting to a wifi AP.\n\nChange-Id: I8b71323985b6c5fc8a75f99470c9f86343d57f90\nBug: 78905546\nTest: manually on android auto device\n"
    },
    {
      "commit": "c172c7d81515e95e778d2a652bd89d63d159a266",
      "tree": "d4df3e519a9f23a9bb946c71d3ab21f3446999a6",
      "parents": [
        "17280c61d3abdcf043a422b87bbfa2289b302dd8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue May 01 16:51:44 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu May 03 18:00:09 2018 +0900"
      },
      "message": "Add static IpClient logging\n\nSupport keeping IpClient logs around and dumping them\nduring dumpsys.  Previously we got this benefit for\nwifi by virtue of WifiStateMachine\u0027s long-lived nature.\nNow that this is changing we need to be sure we have\nlogs, and this method gets us Ethernet logs as well.\n\nBug: 62476366\nBug: 77999594\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - dumpsys connmetrics [ipclient] works\nMerged-In: Ib4daf0902cae91acadbe9965de1fb73c96a47bec\nMerged-In: Ie947394fabcaca7fc1d067f095c2442ee2704593\nChange-Id: I1136a83de8097fdb4130debe1eaf689be7132fe5\n(cherry picked from commit 3f8306b8c56b58054800a576912204e8bf66f9f4)\n"
    },
    {
      "commit": "3f8306b8c56b58054800a576912204e8bf66f9f4",
      "tree": "df7510b241f37ec32e33fa0b59d81416fe5ac69d",
      "parents": [
        "a74dd692aa7ce04d2fd23e19d04c70441e7efa3f"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue May 01 16:51:44 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed May 02 21:53:17 2018 +0900"
      },
      "message": "Add static IpClient logging\n\nSupport keeping IpClient logs around and dumping them\nduring dumpsys.  Previously we got this benefit for\nwifi by virtue of WifiStateMachine\u0027s long-lived nature.\nNow that this is changing we need to be sure we have\nlogs, and this method gets us Ethernet logs as well.\n\nBug: 62476366\nBug: 77999594\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - dumpsys connmetrics [ipclient] works\nChange-Id: I1136a83de8097fdb4130debe1eaf689be7132fe5\n"
    },
    {
      "commit": "3cc40ea6c50c976dd4e6485574a8be899867f610",
      "tree": "bdca949cbd7c67ee3ccb204f3361514f93892bf4",
      "parents": [
        "7bb2e9383d7a4c7a37bf49b7653be4547329d44b"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue Apr 24 01:25:42 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Apr 27 23:30:23 2018 +0900"
      },
      "message": "apf: Add counters for dropped / passed packets\n\nApfFilter maintains separate counters for each reason why a packet was\npassed or dropped by the filter logic.\n\nThere\u0027s also a total which should match the individual counters,\n*unless* the APF interpreter aborted execution early due to an illegal\ninstruction or an out-of-bounds access.\n\nTest: both on APFv2 and APFv4-capable device:\n\truntest -x tests/net/java/android/net/ip/IpClientTest.java\n\truntest -x tests/net/java/android/net/apf/ApfTest.java\n\tmanual tests connected to an AP\nBug: 73804303\nChange-Id: I54b17fcbb95dfaea5db975d282314ce73d79d6ec\n"
    },
    {
      "commit": "d324dceceff5fc85682212092b8321414bda3ad6",
      "tree": "4a4644186f8e40ffdcf588437532ab9a9570767f",
      "parents": [
        "13d650d7cfbc328a3d02b9a252646252cacfac9e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Apr 25 17:27:28 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 26 14:54:48 2018 +0900"
      },
      "message": "Fix CaptivePortalLoginActivity probes to bypass Private DNS\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - manual testing on captive portal networks\nBug: 64133961\nBug: 77140445\nBug: 78548486\n\nMerged-In: I749e8b5dba3b4af9ecb82bfb558c6f0e664531a4\nMerged-In: Ic76d55861f385d1aecd360adda7f10142d083a47\nChange-Id: Idbc4d90eeec257b36c5f374d61dea4600a0f8ebb\n(cherry picked from commit 848d842a3ad94720e1d70db3337048e9568bb9d6)\n"
    },
    {
      "commit": "848d842a3ad94720e1d70db3337048e9568bb9d6",
      "tree": "d4e9933a8236331dfca2df3924abee81921db5a6",
      "parents": [
        "b686b9cf6df8b2416083c7f80bf75a72cd9046f7"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Apr 25 17:27:28 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 26 11:37:03 2018 +0900"
      },
      "message": "Fix CaptivePortalLoginActivity probes to bypass Private DNS\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - manual testing on captive portal networks\nBug: 64133961\nBug: 77140445\nBug: 78548486\n\nChange-Id: Idbc4d90eeec257b36c5f374d61dea4600a0f8ebb\n"
    },
    {
      "commit": "deb145d2334635dc15781415603ff3a8559e7c49",
      "tree": "4625785f53c038304190f95e0159095bf05ef097",
      "parents": [
        "6d9f7943fb1ce93c12b1c7c710d9dbbbd761ab0a"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 16 23:27:51 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Apr 20 17:37:09 2018 +0900"
      },
      "message": "Adjust APF interpreter tests to match APFv4\n\nChange-Id: I4311c754f1cb79633d49c5c1c0b4e27c8dde727e\nBug: 73804303\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\n(cherry picked from commit 545d9367e24d1d55b2539c02273f92c61da74af0)\n"
    },
    {
      "commit": "bb2193bf5877b7a93aebefdb74a8c7f410a17907",
      "tree": "ac32a4ba2f7bf242aa61bb2e5706ac82e9eea6e8",
      "parents": [
        "8182e354d84a0cdf92458b268f96c28d2dce3cb6"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 16 20:15:12 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu Apr 19 21:28:43 2018 +0900"
      },
      "message": "Add support for reading a snapshot of the APF data\n\nNo functional change yet, since startReadPacketFilter() has no callers\nat this time.  In the future, this new hook will be used to take\nperiodic snapshots of the APF memory (for instance, when the device\nwakes up).\n\nDesign note: WifiStateMachine grabs the APF data synchronously\nfrom another thread, but then the data snapshot is delivered to IpClient\nvia an asynchronous reply, following the same pattern used by other\ncommands. This means that there\u0027s no (practical) way for IpClient to\nread the APF data just before replacing the APF program.\n\nEven with this limitation, it\u0027s still possible to reliably decode packet\ncounters and compute deltas relative to the last snapshot, provided that\nthe address range isn\u0027t cleared when installing a new APF filter.\n\nBug: 73804303\nTest: Manual - called the new code and inspected \u0027dumpsys wifi\u0027 output.\nChange-Id: Ia0923d71cf3ee4128fb1c381557316300adac1a3\n"
    },
    {
      "commit": "545d9367e24d1d55b2539c02273f92c61da74af0",
      "tree": "c343a3968d794e43345df18560134e5a1acbcc71",
      "parents": [
        "f493c66f39bb38bb7a997b7c85c8cf658c268553"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 16 23:27:51 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue Apr 17 17:30:41 2018 +0900"
      },
      "message": "Adjust APF interpreter tests to match APFv4\n\nChange-Id: I4311c754f1cb79633d49c5c1c0b4e27c8dde727e\nBug: 73804303\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\n"
    },
    {
      "commit": "408dbda4c1fbee064c7878ef5cfb000e58027a5f",
      "tree": "96e7161874d4b715d87a93dcf569c633f4562a44",
      "parents": [
        "5f91d5ee942ed2af54349a2a78f635237a84dbb4"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu Mar 22 23:07:47 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 16 21:22:41 2018 +0900"
      },
      "message": "Teach ApfGenerator about the new opcodes for accessing data memory\n\nBug: 73804303\nBug: 36221302\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\nChange-Id: Iaf92ca0bbebaaf66d0f2f7adc1a9014607f3ecf6\n(cherry picked from commit a9949e9e2599c5f97bf83c12c8f4fa66be9dd294)\n"
    },
    {
      "commit": "a9949e9e2599c5f97bf83c12c8f4fa66be9dd294",
      "tree": "95395d1e810756b820db5a2e2f4895e41041c739",
      "parents": [
        "1142ffcc9b4624887707e3e7d37e0ec777d099db"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Thu Mar 22 23:07:47 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Apr 13 18:31:58 2018 +0900"
      },
      "message": "Teach ApfGenerator about the new opcodes for accessing data memory\n\nBug: 73804303\nBug: 36221302\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\nChange-Id: Iaf92ca0bbebaaf66d0f2f7adc1a9014607f3ecf6\n"
    },
    {
      "commit": "d7375ac9d79b86ffae9fc1e0d92505b6bfa57eb0",
      "tree": "8e0e085835dbeaa431f8d785e88830078d3240a3",
      "parents": [
        "4f9d750e91061923da90ef174a592fc59d0eff9e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Mar 12 23:18:58 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Apr 09 03:05:37 2018 -0700"
      },
      "message": "Support bluetooth not using MultinetworkPolicyTracker\n\nThis required advancing the IpManager to IpClient refactoring\n(Bluetooth used IpManager and friends). Most importantly, the\nBluetooth code used WaitForProvisioningCallback, so this is\nmoved into IpClient proper now. Also: some more renaming\ncleanup.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 62476366\nBug: 72663849\n\nMerged-In: I5e5b2c59ad3ea9ad574e8e683bcab3b09cfe0791\nMerged-In: I89b45310181d952129fb2294db63654da9b4057f\nChange-Id: I9eee2a9d5c31cdd48a054a7edc3403584efb1864\n(cherry picked from commit 8d1fe54be1b605846cca9dfe4a966b3c5e739caa)\n"
    },
    {
      "commit": "8d1fe54be1b605846cca9dfe4a966b3c5e739caa",
      "tree": "c05dcd9b8692b71c878cb442d1e0290d3932a306",
      "parents": [
        "d61e87ad0899c8a737aa8f3f43b263bcee24325f"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Mar 12 23:18:58 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun Apr 08 23:09:36 2018 -0700"
      },
      "message": "Support bluetooth not using MultinetworkPolicyTracker\n\nThis required advancing the IpManager to IpClient refactoring\n(Bluetooth used IpManager and friends). Most importantly, the\nBluetooth code used WaitForProvisioningCallback, so this is\nmoved into IpClient proper now. Also: some more renaming\ncleanup.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 62476366\nBug: 72663849\n\nChange-Id: I9eee2a9d5c31cdd48a054a7edc3403584efb1864\n"
    },
    {
      "commit": "c43d2f5b1f12dadd8c87c069cd4a13cfbc481699",
      "tree": "07c5c5fe1763bdc7b1e260778a9e2dbe751f3b94",
      "parents": [
        "7d1357723d3bd24a9a31fa0a13deba39294a28b8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Mar 21 07:18:33 2018 -0700"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Apr 03 15:36:02 2018 -0700"
      },
      "message": "Support bypassing TLS in the framework\n\nThis change comprises the following parts:\n\n    [1] android.net.dns.ResolvUtil, containing methods that encapsulate the\n        use of the high bit in netids used in DNS resolution contexts.\n\n    [2] Updates to captive portal apps to call the ResolvUtil method that\n        enables DNS-over-TLS bypass for the captive portal app process.\n\nTest: as follows\n    - builds\n    - flashes\n    - boots\n    - runtest frameworks-net passes\nBug: 64133961\nBug: 72345192\n\nMerged-In: I0994b53d24ed25a2eb9e65429c61cf6fa87c7513\nMerged-In: I4c49e23d8caa4d485df1c1d2f135a7282d439c0b\nChange-Id: I2072c1f68d6978fa0d7e9d8693135a2c51bb0f87\n(cherry picked from commit 2140529d9b8e116d88c2a385a0b3179c2ede5ad7)\n"
    },
    {
      "commit": "2140529d9b8e116d88c2a385a0b3179c2ede5ad7",
      "tree": "a6693ad493766b407499065ddbe7518e455578c0",
      "parents": [
        "e34c426fd346d041176c83393bb78abfd49f6e9f"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Mar 21 07:18:33 2018 -0700"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Apr 03 00:35:30 2018 -0700"
      },
      "message": "Support bypassing TLS in the framework\n\nThis change comprises the following parts:\n\n    [1] android.net.dns.ResolvUtil, containing methods that encapsulate the\n        use of the high bit in netids used in DNS resolution contexts.\n\n    [2] Updates to captive portal apps to call the ResolvUtil method that\n        enables DNS-over-TLS bypass for the captive portal app process.\n\nTest: as follows\n    - builds\n    - flashes\n    - boots\n    - runtest frameworks-net passes\nBug: 64133961\nBug: 72345192\n\nChange-Id: I2072c1f68d6978fa0d7e9d8693135a2c51bb0f87\n"
    },
    {
      "commit": "5be71dcb03ff689098d992c5455f0a1766c8a2e0",
      "tree": "a0f3bda56bf9f98b9ebf7c1c7721e2caff703569",
      "parents": [
        "60a24b97f75ddb65a75cef75551f2ebafa6fb141"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Wed Mar 28 20:11:49 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Tue Apr 03 16:16:14 2018 +0900"
      },
      "message": "APF: drop multicast ICMPv6 while in doze mode\n\nSome WiFi hotspots send excessive multicast IPv6 ping requests which\ncause considerable power drain. Thus, drop all multicast ICMPv6 ping\nrequests while the device is in doze mode.\n\nBug: 66930077\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\nTest: manual - compared generated APF bytecode using apf_disassembler\nTest: manual - force idle mode while sending multicast pings to device\nChange-Id: I25dbf99985cf4413b4d0e3920d281fe6d663197a\n(cherry picked from commit e2c70f8a6092f740ea10e7476b33860d756cf94f)\n"
    },
    {
      "commit": "e2c70f8a6092f740ea10e7476b33860d756cf94f",
      "tree": "53718d9751ec54190d90727d785a1830885864cc",
      "parents": [
        "786150bc0924e6effbddb8d11592d18f1372498e"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Wed Mar 28 20:11:49 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Mon Apr 02 21:17:51 2018 +0900"
      },
      "message": "APF: drop multicast ICMPv6 while in doze mode\n\nSome WiFi hotspots send excessive multicast IPv6 ping requests which\ncause considerable power drain. Thus, drop all multicast ICMPv6 ping\nrequests while the device is in doze mode.\n\nBug: 66930077\nTest: runtest -x tests/net/java/android/net/apf/ApfTest.java\nTest: manual - compared generated APF bytecode using apf_disassembler\nTest: manual - force idle mode while sending multicast pings to device\nChange-Id: I25dbf99985cf4413b4d0e3920d281fe6d663197a\n"
    },
    {
      "commit": "671547b2249a3bc2f613ae6279d207084bc30fa4",
      "tree": "55369c78eb1091fb0f21753c111b68b5b555458d",
      "parents": [
        "4140cc106e3e250bc4487c433ecd885bf0d1f7a5",
        "6c02f9942aaf4f6665018e0c7f07aeceb5ae752e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 30 09:15:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 09:15:13 2018 +0000"
      },
      "message": "Merge \"Use InterfaceSet for upstream interfaces.\" into pi-dev"
    },
    {
      "commit": "6c02f9942aaf4f6665018e0c7f07aeceb5ae752e",
      "tree": "e27766b0ff8e607f0d5d4a832af31823f1e3dc1f",
      "parents": [
        "5d0dc453e90554e739c5994a417e73a560edc547"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 09 14:07:18 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 30 18:08:52 2018 +0900"
      },
      "message": "Use InterfaceSet for upstream interfaces.\n\nAllows using different upstream interfaces for IPv4 and IPv6.\n\nBug: 38218697\nBug: 64382985\nBug: 64976379\nBug: 64995262\nBug: 64380515\nTest: runtest frameworks-net, manual (with aosp/644099 applied)\n(cherry-pick of aosp I3db63f7aa5255a0229253187def7590a386c5133)\nMerged-In: Ic8602dd029b5a9626aaf6651315b82ab6327037c\nMerged-In: I015ac946afa581be1d94f10ab766ac00f5a4ede0\n\nChange-Id: I8c48dab5eb67e60dadbfa974122fc884f4badd15\n"
    },
    {
      "commit": "51dab0ed9d2b92884af4faf9a55381b12a8a373c",
      "tree": "15b759cbd104329b927bdbbd3b8eb0165bbf28ea",
      "parents": [
        "8e338f7dae163fbd0b2ad5a91e38cbccff659366",
        "d6bf7ffea788f5753be48a487a2a3b34951dfcb8"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 30 07:25:08 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 30 07:25:08 2018 +0000"
      },
      "message": "Merge \"Relax APF version check in ApfGenerator\""
    },
    {
      "commit": "0bc4709add7ae23a859abfb165a4323fe93ef1fd",
      "tree": "2e7d61325676fec93070a03780b98cd8a7c31186",
      "parents": [
        "a691b71e995ec6f5fd68ab15823fc65e623c67e6"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 30 13:08:26 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 30 06:14:39 2018 +0000"
      },
      "message": "Relax APF version check in ApfGenerator\n\nInstead of requiring an *exact* version, we now require a minimum\nversion. This is necessary if we wish to upgrade the APF interpreter in\nvendor firmware independently of the framework code. Adding new opcodes\nwithout changing the semantics of the old ones is always possible and\nusually easy, so we can at least have a backwards-compatibility horizon\nwider than a single version.\n\nBug: 36221302\nBug: 73804303\nChange-Id: I4f1ed661afb2ede193188eb8086fbf2a8b45b33d\nTest: Change extracted from aosp/647079 and tested there\n(cherry picked from commit d6bf7ffea788f5753be48a487a2a3b34951dfcb8)\n"
    },
    {
      "commit": "d6bf7ffea788f5753be48a487a2a3b34951dfcb8",
      "tree": "9cc3d8efee8d350537e69d60d16b1082345bbbef",
      "parents": [
        "e2e7b28c126ef836b67e3fb7a7a6ee8424334ccb"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 30 13:08:26 2018 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 30 13:14:54 2018 +0900"
      },
      "message": "Relax APF version check in ApfGenerator\n\nInstead of requiring an *exact* version, we now require a minimum\nversion. This is necessary if we wish to upgrade the APF interpreter in\nvendor firmware independently of the framework code. Adding new opcodes\nwithout changing the semantics of the old ones is always possible and\nusually easy, so we can at least have a backwards-compatibility horizon\nwider than a single version.\n\nChange-Id: I4f1ed661afb2ede193188eb8086fbf2a8b45b33d\nTest: Change extracted from aosp/647079 and tested there\n"
    },
    {
      "commit": "25a7e4fdbffce67718ca2477e0eb8e4ee6265528",
      "tree": "a97316d81207199ccfd6ec9d2c652ebc30310453",
      "parents": [
        "e2e7b28c126ef836b67e3fb7a7a6ee8424334ccb"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 09 14:07:18 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Mar 29 18:13:46 2018 +0900"
      },
      "message": "Use InterfaceSet for upstream interfaces.\n\nAllows using different upstream interfaces for IPv4 and IPv6.\n\nBug: 38218697\nBug: 64382985\nBug: 64976379\nBug: 64995262\nBug: 64380515\nTest: runtest frameworks-net, manual (with aosp/644099 applied)\n\nChange-Id: I3db63f7aa5255a0229253187def7590a386c5133\n"
    },
    {
      "commit": "ea1b8bd5a5647dd1cb65cac0100bac29e41ddc48",
      "tree": "592e0e5a6f374aa1895d9ad97326e6c9010a825c",
      "parents": [
        "cefe0c65184b0a288fe0c4cdce721ebc0ffb8efa"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Mar 02 16:51:13 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Mar 06 11:06:34 2018 +0900"
      },
      "message": "Fail if the interface is not available when starting\n\nAddresses a long-standing TODO.  Now, when calling IpClient\u0027s\nstartProvisioning(), the interface has to be available (i.e.\nInterfaceParams#getByName() must return non-null).\n\nAlso:\n    - add a test\n    - refactor for testability\n    - delete some constructors no longer used\n    - properly handle passed-in null IpClient.Callback\n    - some more IpManager -\u003e IpClient renaming\n    - permit recording metrics before starting a provisioning\n      attempt (logging immediate errors) without Log.wtf().\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks/opt/net/wifi/tests/wifitests/runtests.sh passes\n    - runtest frameworks-net passes\n    - basic WiFi IpClient connections works fine\nBug: 62476366\nBug: 73487570\nMerged-In: I68e5e24122dc31e730cdbe8d75e33847e6332da4\nMerged-In: Ifd27f5d908947cd7b4e1b8d54f9fa87e43ebb11b\nMerged-In: Ief3c8e1652f69af0276fe35946ae1bf6e6b1b57e\nChange-Id: Ic83ad2a65637277dcb273feb27b2d1bb7a11eb2b\n(cherry picked from commit b152cd0aa4f333b721615bb17773b35a989245fb)\n"
    },
    {
      "commit": "b152cd0aa4f333b721615bb17773b35a989245fb",
      "tree": "c23e80496ccff661c66649af3ff29c2908ffcce0",
      "parents": [
        "1451124f86c70b70eeb6908dd9a8248f9e8e2ea6"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Mar 02 16:51:13 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Mar 05 19:29:26 2018 +0900"
      },
      "message": "Fail if the interface is not available when starting\n\nAddresses a long-standing TODO.  Now, when calling IpClient\u0027s\nstartProvisioning(), the interface has to be available (i.e.\nInterfaceParams#getByName() must return non-null).\n\nAlso:\n    - add a test\n    - refactor for testability\n    - delete some constructors no longer used\n    - properly handle passed-in null IpClient.Callback\n    - some more IpManager -\u003e IpClient renaming\n    - permit recording metrics before starting a provisioning\n      attempt (logging immediate errors) without Log.wtf().\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks/opt/net/wifi/tests/wifitests/runtests.sh passes\n    - runtest frameworks-net passes\n    - basic WiFi IpClient connections works fine\nBug: 62476366\nBug: 73487570\nChange-Id: Ic83ad2a65637277dcb273feb27b2d1bb7a11eb2b\n"
    },
    {
      "commit": "c9055b637ceb8e12edc2282ea5049fc0bca6b10a",
      "tree": "d580f1b64461b0c0a3988247f5788a911b411705",
      "parents": [
        "acb42c36f5ecfa2ab442fce1b97ab446c73008a8",
        "d389a223919646eb737339fa4a4669cf7b11f3d1"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Feb 23 03:08:02 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Feb 23 03:08:02 2018 +0000"
      },
      "message": "Merge \"Allow callers to synchronously block for shutdown\" am: 9121322ce7 am: a49db4d080\nam: d389a22391\n\nChange-Id: Idf60c16ac8003503f33130ddc6276a17fed75108\n"
    },
    {
      "commit": "ce194e0659c92f4b4bc71d1842c449df1013be14",
      "tree": "010fd018f7325fc8ebf5a5ce27eb59f0c84a31f5",
      "parents": [
        "2519de11c3d139db663d0975c2be507aa84c15b7"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Feb 21 14:47:09 2018 -0800"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Feb 22 11:14:57 2018 -0800"
      },
      "message": "Allow callers to synchronously block for shutdown\n\nAdd a simple CountDownLatch and a public method that callers can use\nto block until IpClient has cleanly shutdown the state machine.\n\nIn cases where IpClients are created and destroyed dynamically for\nthe same interface name, this can be used to make sure only one\nIpClient at a time is touching the given interface.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - OTG ethernet works (i.e. client mode)\n    - removing and reinserting the ethernet dongle continues\n      to show the \u003c-\u003e Ethernet sysui icon and basic network\n      connectivity works\n    - removing and reinserting the cable (link up/down events)\n      also shows the \u003c-\u003e Ethernet sysui icon and basic network\n      connectivity works\nBug: 62476366\n\nChange-Id: If4bffd54b7ebc088ec07cac10251e451f8161b6c\n"
    },
    {
      "commit": "bbab23ff97688f33c5cc41d5d0e134c0d9f58c6c",
      "tree": "495d74767efc00b7aebc085751ee61af1636bff6",
      "parents": [
        "b5cc72055fd3f4a8476f1b00931bc96ba366a859"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 07 15:34:27 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 02:19:42 2018 -0800"
      },
      "message": "Frameworks: Annotate trivial @GuardedBy in services/ misc\n\nAdd @GuardedBy for simple functions that require a single lock\nand are named XYZLocked.\n\nDerived by errorprone.\n\nBug: 73000847\nTest: m\nTest: m javac-check-framework RUN_ERROR_PRONE\u003dtrue\nChange-Id: Id1d9fbe5018250e3b9d1466fc5f670d5ad902fa3\n"
    },
    {
      "commit": "26de1d3b9085b0a46542e922b8443c65723164b1",
      "tree": "e3ecfcb3666706f7831284b4bde8ad5d44d410e6",
      "parents": [
        "ac2247c4060567850d98735734de666ee60f6fbb"
      ],
      "author": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Thu Nov 02 21:01:46 2017 -0700"
      },
      "committer": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Mon Jan 29 11:19:43 2018 -0800"
      },
      "message": "Relocate KeepalivePacketData to frameworks/base\n\nDue to an issue resolving the boot classpath, the\nKeepalivePacketData structure cannot be referenced\nby frameworks/opt/telephony while it is in services.\n\n-Move KeepalivePacketData to android.net\n-Also, relocate IpUtils without changing the package\n name.\n\nBug: 38350389\nTest: compilation\nMerged-In: If5fc63e9ad8b9b2d4c2fee47ff4bab2ab190a05a\nChange-Id: If5fc63e9ad8b9b2d4c2fee47ff4bab2ab190a05a\n(cherry picked from commit 41002e3080461ba6a7aee12c1d12dd13edc8626c)\n"
    },
    {
      "commit": "412d7631e51a2a48e9f43d2ce3bee8c90cf33075",
      "tree": "bbddf438acb902237bf9c47139e1e69ac255af5e",
      "parents": [
        "c949502b95c2c806338790101e8897a7899737e9",
        "d260ef2b30c28dc26a0411b54e3cb1140faef9c4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 25 03:49:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 25 03:49:19 2018 +0000"
      },
      "message": "Merge \"Determine the multipath hint from data usage.\""
    },
    {
      "commit": "41002e3080461ba6a7aee12c1d12dd13edc8626c",
      "tree": "2ba1b78ada9c4c020c44e27596a76f13286324c5",
      "parents": [
        "adb4fc73b0d9be2ad5f76c9e7248440625b80b75"
      ],
      "author": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Thu Nov 02 21:01:46 2017 -0700"
      },
      "committer": {
        "name": "Nathan Harold",
        "email": "nharold@google.com",
        "time": "Wed Jan 24 10:26:04 2018 -0800"
      },
      "message": "Relocate KeepalivePacketData to frameworks/base\n\nDue to an issue resolving the boot classpath, the\nKeepalivePacketData structure cannot be referenced\nby frameworks/opt/telephony while it is in services.\n\n-Move KeepalivePacketData to android.net\n-Also, relocate IpUtils without changing the package\n name.\n\nBug: 38350389\nTest: compilation\nChange-Id: If5fc63e9ad8b9b2d4c2fee47ff4bab2ab190a05a\n(cherry picked from commit bd4093be7cab51d6ad031854324134a9c8637c2c)\n"
    },
    {
      "commit": "d260ef2b30c28dc26a0411b54e3cb1140faef9c4",
      "tree": "8f93d0b3089928287aecbd1f88d7326c3f3bcb34",
      "parents": [
        "e0f6909cba5aedb73c4e007baac330b9f6383d72"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 24 17:35:07 2018 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Jan 25 01:25:09 2018 +0900"
      },
      "message": "Determine the multipath hint from data usage.\n\nBug: 35142602\nTest: builds, boots\nChange-Id: I0f5de5e313ead442aa210f163db035fcf7de5e73\n"
    },
    {
      "commit": "918a68b3ca3d375335691230cc8fd7c974403717",
      "tree": "c32a26203992a4316905fea10f42ba2d0cf7cd15",
      "parents": [
        "f474fc3ac1bf45e658431c665418ae508458e1d9"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Jan 19 17:00:47 2018 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Tue Jan 23 21:38:00 2018 +0900"
      },
      "message": "Move constants into a new file.\n\nAlso audit all constants, make some private, annotate some\nwith @VisibleForTesting.\n\nTest: runtest framework \u0026\u0026 cts\nChange-Id: Iaf5ea7abd36fd8d544dcc84654f6cb529196d654\n"
    },
    {
      "commit": "be83aebfebe6eecc4bcacc5a6a8ce7949319880f",
      "tree": "18511b8d562194f673ca1f6592c5801cc6c612f9",
      "parents": [
        "d6c3813c08a1025df42b06fb08b175eafd7e4714"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Jun 09 19:20:26 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jan 11 12:48:08 2018 +0900"
      },
      "message": "Move DhcpClient SM thread onto IpClient\u0027s SM thread\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - basic wifi usage nominal\nBug: 62476366\nChange-Id: I9a74e001bc86972e31b7e0898711628e65d9cf7a\n"
    },
    {
      "commit": "8bd00d5f7ced34a45173e45537dc3100d62ee6a5",
      "tree": "dc92c5b7729305897f8831a387000fbdf4d4b213",
      "parents": [
        "f448371208a53a93657b8120105e5f5fbb9feee8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Dec 08 17:47:50 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jan 11 09:47:40 2018 +0900"
      },
      "message": "Refactor to InterfaceParams utility class\n\nNetworkInterface throws Exceptions every time you look at it askance.\nTry to make something we instantiate fully, once, and pass it around.\n\nPartial MacAddress-ification as well, for good measure.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - basic IPv6 tethering works\nBug: 32163131\nBug: 62476366\nChange-Id: I16c145fddb4e76387370338d792a438eed886d7f\n"
    },
    {
      "commit": "652044a7db7a64bf39f18a306431767bdf886ac1",
      "tree": "9423b1bbf27f37b6daeb14a428941ae9e11dc731",
      "parents": [
        "94209ab7686b202cfad6e42e07056bb9511006a8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Dec 15 06:36:50 2017 +0000"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Dec 15 06:36:50 2017 +0000"
      },
      "message": "Revert \"Send empty LinkProperties when entering StoppedState.\"\n\nThis reverts commit 94209ab7686b202cfad6e42e07056bb9511006a8.\n\nReason for revert: should not have auto-submitted prior to more extensive wifi team testing.\n\nChange-Id: Ie81b10473caf34971226948038bc20dc4fa6a1ae\n"
    },
    {
      "commit": "94209ab7686b202cfad6e42e07056bb9511006a8",
      "tree": "878230a3f9a529f6c5ed393ff7827b6c41fbe657",
      "parents": [
        "f5bec0d781499a3bde7aa54f2072019ce2709e70"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Dec 11 14:24:08 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Dec 13 12:13:36 2017 +0900"
      },
      "message": "Send empty LinkProperties when entering StoppedState.\n\nAdditionally, no longer try to transition from within a State\u0027s\nenter() method (this can encounter Log.wtf()s). Introduce some\nCMD_JUMP_* commands and use deferMessage().\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes (except for IpConnectivityMetricsTest failures)\n    - manual changing from DHCP to static configurations works:\n  2017-12-11T19:06:19.082 - INVOKE onLinkPropertiesChange({{InterfaceName: wlan0 LinkAddresses: []  Routes: [] DnsAddresses: [] Domains: null MTU: 0}})\n\nBug: 69800563\nBug: 70394432\nChange-Id: Ice249a48b66806c0270ec3f11dd2e8e387d4e29b\n"
    },
    {
      "commit": "e3396622478c7a6f9f5dbb240a403539d44b316e",
      "tree": "4746cb016aaa47b291b471f5e027107261479188",
      "parents": [
        "8d621cc0425363ca719ce485ddb2c4e1bd174813",
        "f1967c4125f1f08f9ee4a45d68413a1c3a0e7d72"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 09 01:34:07 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 09 01:34:07 2017 +0000"
      },
      "message": "Merge \"Revert \"Send empty LinkProperties when entering StoppedState.\"\""
    },
    {
      "commit": "f1967c4125f1f08f9ee4a45d68413a1c3a0e7d72",
      "tree": "46aa9509b43018b31c2d7b5e15f84e1a47498f63",
      "parents": [
        "b3f9f4a30502477e71fc93037dc58080fddb1853"
      ],
      "author": {
        "name": "Roshan Pius",
        "email": "rpius@google.com",
        "time": "Fri Dec 08 22:29:50 2017 +0000"
      },
      "committer": {
        "name": "Roshan Pius",
        "email": "rpius@google.com",
        "time": "Fri Dec 08 22:29:50 2017 +0000"
      },
      "message": "Revert \"Send empty LinkProperties when entering StoppedState.\"\n\nThis reverts commit b3f9f4a30502477e71fc93037dc58080fddb1853.\n\nReason for revert: Crash in WifiStateMachine (b/70394432)\n\nChange-Id: I3a96c822eddcebcdd6621cee878b865171d094e8\n"
    },
    {
      "commit": "b501e7e25b4f338d8d2e9dc87945a0376b78cd7d",
      "tree": "120fdd2d5990aa9d95972ddeb97f6aad2c276cba",
      "parents": [
        "efdca004abe8a03aa15842b218e95af4e869e611",
        "84714bffa1a58fe1f6a114ae015f8e38be46f32d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 08 05:44:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 08 05:44:26 2017 +0000"
      },
      "message": "Merge \"Refactor to IpNeighborMonitor and single-threaded semantics\""
    },
    {
      "commit": "84714bffa1a58fe1f6a114ae015f8e38be46f32d",
      "tree": "7760a0766578216f8579c48f07fb28fc80860a7f",
      "parents": [
        "6a4be8613a2313b2b36f3df4f4a95579e2a2501d"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri May 19 09:29:48 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Dec 08 11:12:05 2017 +0900"
      },
      "message": "Refactor to IpNeighborMonitor and single-threaded semantics\n\nIpReachabilityMonitor (and IpNeighborMonitor) are only accessed from\nthe IpManager StateMachine\u0027s thread. Consequently lots of locking can\nnow be removed.\n\nAdditionally:\n    - rename BlockingSocketReader to PacketReader\n    - incorporate IpReachabilityMonitor output in dump()\n\nTest: as follows\n    - runtest frameworks-net passes\n    - \"adb shell ip neigh change \u003caddress\u003e dev wlan0 nud failed\"\n      triggers wifi to disconnect\nBug: 62476366\nBug: 67013397\nChange-Id: I18aca29ae0019a72a7e559c2832e0d9b0e33d81e\n"
    },
    {
      "commit": "b3f9f4a30502477e71fc93037dc58080fddb1853",
      "tree": "6d90144863f3b9f77afb82ff01a39b88abf909cc",
      "parents": [
        "86c995138379be76613408abdec07d34bb32cd58"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Dec 06 13:37:09 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Dec 07 18:07:38 2017 +0900"
      },
      "message": "Send empty LinkProperties when entering StoppedState.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - changing from DHCPv4 to static while continuously pinging the\n      default gateway works jsut fine\n    - dumpsys log shows that during the change we send the empty LP:\n  12-06 08:46:51.085 - CMD_ON_QUIT wlan0/23 0 0 null [rcvd_in\u003dStoppingState, proc_in\u003dStoppingState]\n  12-06 08:46:51.092 - INVOKE onLinkPropertiesChange({{InterfaceName: wlan0 LinkAddresses: []  Routes: [] DnsAddresses: [] Domains: null MTU: 0}})\n\nBug: 69800563\nChange-Id: I01047e9a72fce718a167c592bf14406c3bab3ba9\n"
    },
    {
      "commit": "7216636a621d413453947c1d40feaec9948fed73",
      "tree": "0323fb2b0abc87a6ef18cc196f4754b282e35314",
      "parents": [
        "69c9402a29f1c9f958284dfeb95404f88cac2cf1"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Oct 13 16:32:20 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Nov 07 21:42:39 2017 +0900"
      },
      "message": "Refactor ApfFilter creation\n\nThis patch introduces a helper ApfConfiguration class for passing filter\nparameters to the constructor of ApfFilter. The benefits are:\n  - less parameter boilerplate across IpManager, ApfFilter, ApfTest\n  - easier to add more parameters in the future (useful for hardware\n    counters options and further gservices configurable options)\n\nThere is no functional changes otherwise.\n\nTest: runtest frameworks-net\nChange-Id: I47231c21df80bc36b6d4e15369748017b50b8da1\n"
    },
    {
      "commit": "22526e0139bea1928d635c56c6d30ac22baa05d5",
      "tree": "3f3fc0ea2fff92d6633a11a102b59d749823e3c9",
      "parents": [
        "80c3c7093040a6c66a2fa7c634451694d2bb5ee8"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Oct 31 11:37:41 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun Nov 05 15:34:08 2017 +0900"
      },
      "message": "Rename withIPv6AddrGenMode{Type}() methods to using{Type}MacAddress()\n\nCallers of IpClient can tell it via the Builder whether a stable or\na random link-layer identifier is used.  IpClient will make the\nappropriate IP-layer adjustments (for now this means RFC 7217\naddresses or not).\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh runs as well\n      as possible on AOSP (no new errors)\nBug: 62476366\nChange-Id: Ic9d52ea4f2c6c3588852ed41c81f8664d5cc298a\n"
    },
    {
      "commit": "5526d44916139afa77bbd1eafb004320c82e5515",
      "tree": "7b78e89d2ac5c147358dbe53dbd542f2fbb88fc6",
      "parents": [
        "bd6d3c5743d22d638f5ad13c6cab291f8b4fe406"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Oct 27 14:16:56 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Oct 27 14:17:04 2017 +0900"
      },
      "message": "Remove unused method on VersionedBroadcastListener\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - manually enabling USB tethering toward Wi-Fi worked\nBug: 32163131\n\nChange-Id: I38e4b77a7d59584ebeb450ebe5a9dcbcb36f4fa1\n"
    },
    {
      "commit": "de63772eff39adccc7819765e09b499cfd3b833e",
      "tree": "71761768897d5c31d707e02a85522f70f671abe6",
      "parents": [
        "fb7c0e8c91b49f55040b0d19deb35c387ddb8ee6"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Oct 12 22:16:01 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Oct 20 19:56:27 2017 +0900"
      },
      "message": "Switch to listening for CarrierConfig changes for provisioning rechecks\n\nThis change switches the signal used for provisioning rechecks from:\n\n    ACTION_SIM_STATE_CHANGED\n\nto:\n\n    ACTION_CARRIER_CONFIG_CHANGED\n\nAdditionally:\n    - reexamine carrier config overrides during provisioning re-checks\n      (this just was never happening before).\n    - refactor shared code out to VersionedBroadcastListener\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net\nBug: 63400667\nBug: 67755969\nChange-Id: Ib9d222eb7ca0e0dd988a1bd97ab32059189ada2c\n"
    },
    {
      "commit": "5c7128c070146046d85feb003bca94cb8649f09c",
      "tree": "7db9083fc52b8d0b44144ebe91286c130eb31d2a",
      "parents": [
        "eaf4d18bdf230b4a446d876178841aebdfd1a84e",
        "6d8b80a5b9b0648af4c57f26ab341e3b0c41b5ce"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 20 02:29:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 20 02:29:41 2017 +0000"
      },
      "message": "Merge changes I3b56e75d,I36255a2c\n\n* changes:\n  Skeletal IpManager proxying to the new IpClient\n  Rename IpManager to IpClient\n"
    },
    {
      "commit": "6d8b80a5b9b0648af4c57f26ab341e3b0c41b5ce",
      "tree": "a453954a1146fe2754fc9c06c1a7517a7af61f2f",
      "parents": [
        "1b2935806fbb3da7efda8d11bf8d00cdf4ec4c12"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Oct 11 22:00:11 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Oct 19 12:37:58 2017 +0900"
      },
      "message": "Skeletal IpManager proxying to the new IpClient\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n    - both wifi and ethernet connectivity works\nBug: 62476366\n\nChange-Id: I3b56e75d545594b88849a621e4ae09f2e1d45c69\n"
    },
    {
      "commit": "1b2935806fbb3da7efda8d11bf8d00cdf4ec4c12",
      "tree": "b1f2bf833d5fc50a2784127ee2e2aa99dccd50e0",
      "parents": [
        "3851f132d10db766f1d9a49099ec19a84957afad"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Oct 11 19:43:10 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Oct 19 12:37:58 2017 +0900"
      },
      "message": "Rename IpManager to IpClient\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 62476366\nChange-Id: I36255a2c8e1a2f52693716b445359cce0b4304af\n"
    },
    {
      "commit": "6217e37d30042fd78d17a8d5145f578279d60808",
      "tree": "292f5e2199737fdd11d57289b564ea65fb705976",
      "parents": [
        "e994b4b584a23be4574b725f6b5e654535f8e1d0"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Tue Oct 17 20:26:20 2017 +0100"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Wed Oct 18 14:53:57 2017 +0100"
      },
      "message": "Framework: Prefer android.system.Os over libcore.io.Libcore.os\n\nThis is a pure refactoring with no a behavior change other than\nthat these calls now go through android.system.Os, which immediately\ndelegates to Libcore.os.\n\nThis is a first step towards separating framework (via\nandroid.system.Os) vs. libcore (via Libcore.os) clients of these\nlow level APIs. Separating these is a prerequisite towards moving\nthe API parts of android.system into framework, and moving the\nrest into a different package in libcore.\n\nTest: Treehugger\nBug: 67901714\n\nChange-Id: Ifd8349ec5416e5693f40dba48fdf2bef651b7d81\nMerged-In: Ifd8349ec5416e5693f40dba48fdf2bef651b7d81\n"
    },
    {
      "commit": "ed0b030e173ca5a23d9da54fb6fe5f0c2780d704",
      "tree": "e4e85f6d9096bcdd1392d467a6eb755892e3a1f4",
      "parents": [
        "645cd2ad2665f422f0499d86b061d56a31926d18",
        "e42502d2bb85b240a3d4e7ef29ad5a5d6413f29d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 11 12:42:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 11 12:42:41 2017 +0000"
      },
      "message": "Merge \"IpManager: add display name for helpful logging, and Network\""
    },
    {
      "commit": "e42502d2bb85b240a3d4e7ef29ad5a5d6413f29d",
      "tree": "df81d64b1b02121460a0e4d3068f58de9633bdce",
      "parents": [
        "7d1789867b989ebcc17c8e1ba2fcf6d0824c5148"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Oct 04 20:28:54 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Oct 11 19:48:40 2017 +0900"
      },
      "message": "IpManager: add display name for helpful logging, and Network\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 62476366\nChange-Id: I509506814fa704e54f3d67158203276312a24fa1\n"
    },
    {
      "commit": "126171b2ccf938934a14fcd992dbff0919da7b53",
      "tree": "4c64aaf0fcab421559cd0335454654f91774bacd",
      "parents": [
        "7d1789867b989ebcc17c8e1ba2fcf6d0824c5148"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Oct 10 11:54:08 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Oct 11 11:37:45 2017 +0900"
      },
      "message": "Log upstream network suspend/resume callbacks\n\nAlso log signal strength while we\u0027re at it:\n\n    2017-10-10T14:05:00.968 - [UpstreamNetworkMonitor] preferred upstream type: WIFI\n    2017-10-10T14:06:07.654 - [UpstreamNetworkMonitor] upstream network signal strength: -62 -\u003e -67\n    2017-10-10T14:06:13.704 - [UpstreamNetworkMonitor] upstream network signal strength: -67 -\u003e -64\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\nBug: 29337859\nBug: 32163131\nBug: 64976634\nBug: 67396342\n\nMerged-In: I9121798bba0be9dcdf1e45d39c092020620fa53b\nMerged-In: I1d3420380691efd886315275598134b98f4041ed\nChange-Id: Id6e143edc9f5b0256aa637643680f6c8dce70d90\n(cherry picked from commit 60caf7d29132262dd4a077b68daa807d22773524)\n"
    },
    {
      "commit": "e5659bd316d20ab1292daeac6d9a91ac00573d33",
      "tree": "753b3569250b1a343e7209caba382162b6149787",
      "parents": [
        "a666dbb628f31c51d2a1afd4927da67c891f009a"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Wed Oct 04 14:51:42 2017 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Oct 06 13:38:46 2017 +0900"
      },
      "message": "Add some useful helpers and constants.\n\nTest: Pulled out of a client app ; the client app is behaving\nTest: identically to how it was behaving before. Wrote unit\nTest: tests in frameworks-net.\n\nChange-Id: I397137748a95c65cee2e1e1b243a1a260e83a6f7\n"
    },
    {
      "commit": "f840e07f821cb17c9ae1e6583a28eff548b90892",
      "tree": "7917793551477f9051ccb53e0617aa834d715f0b",
      "parents": [
        "f4ec2ab706a7a8741923f074c6f79192d5a93dfd"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jul 10 20:17:30 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Sep 28 18:22:40 2017 +0900"
      },
      "message": "Change BlockingSocketReader to use MessageQueue fd handling\n\nConvert the simplistic blocking read in a separate thread model to\nthe MessageQueue OnFileDescriptorEventListener model, albeit still\non a separate thread.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - basic IpManager functions still work,\n      including ConnectivityPacketTracker\nBug: 62476366\nBug: 67013397\nChange-Id: I1f4a6707eba402338947fe3f5392a26660f05714\n"
    },
    {
      "commit": "fc105bb6d8c44010f07cf157750b8b5bfc0d06aa",
      "tree": "9b184f92ae50464a03316219fb16a6a9269b4f9c",
      "parents": [
        "9c57accc45c5fa16ccdf1be8ce5341633366a783"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jun 19 11:33:59 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Sep 08 10:54:20 2017 +0900"
      },
      "message": "Support NAT keepalives\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - turned on debugging and walked around watching IpReachabilityMonitor\n      force neighbors into NUD_PROBE state without error\n    - observed NAT callbacks happening without any reported errors\n    - watched:\n        adb shell cat /proc/net/nf_conntrack | egrep \u0027192[.]168[.]43[.]\u0027 | sort -n -k5\n      for correct timeout updates\n\nBug: 29337859\nBug: 32163131\n\nMerged-In: I82ac60e5ad79ec64a13df6ec56b5b51b223f8dde\nMerged-In: I09bc685e821ec5e871576a54c4290edea4c5160b\nMerged-In: I4d180369a8f64ee494b016656988252d98a09ba4\nChange-Id: Icb23da64cfaa3a19f7bc75fba426a52b0994fb0f\n(cherry picked from commit 7a65bc62fbe0391f88834ab27b32033d6b957c8b)\n"
    },
    {
      "commit": "d3c0b5ed6f28dfcc93e9281dca7e88440432ec34",
      "tree": "da28019e21953e283ad68032427c07823b3af385",
      "parents": [
        "6391598412b0a265c5c9e2c162fd1d7c42353dc6"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun Sep 03 20:38:29 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Sun Sep 03 21:57:08 2017 +0900"
      },
      "message": "Refactor interface IP code into InterfaceController\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest frameworks-net passes\n      (except for UidRange and APF tests that are missing libvndk)\n    - regular WiFi STA mode attach works for IPv4-only, dualstack,\n      and IPv6-only networks\n    - tethering works with dualstack upstream and downstream\nBug: 62476366\n\nChange-Id: Id807b3091b0b2935b01aeb3644245034312b4183\n"
    },
    {
      "commit": "fd424169a1ffb549806f27e5478aa0700416296a",
      "tree": "15e67f1c034bd1b8dd51612e213c2c98d53fa797",
      "parents": [
        "fd5cdfc924b3f63ed1a1f725e09112ca4ed8465e"
      ],
      "author": {
        "name": "Ahmed ElArabawy",
        "email": "arabawy@google.com",
        "time": "Wed Aug 02 13:31:05 2017 -0700"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Sep 01 14:03:58 2017 +0900"
      },
      "message": "Add APF black list for ether-type\n\nAdd a configurable black for protocols which packets are to be dropped\nby APF. This enales an OEM to configure the APF to filter out un-needed\npackets from reaching the host\n\nBug: 62415182\nTest: runtest frameworks-net\n\nMerged-In: I86335a0f854d5e83a2b2767978cd69b2cc25c2f8\n\nSigned-off-by: Ahmed ElArabawy \u003carabawy@google.com\u003e\n\n(cherry picked from commit caffbe127726c6a9ab5dd023a9b09cfa43eac617)\n\nChange-Id: I15a758d18464d73d24ba8364a867904bb3cd3b34\n"
    },
    {
      "commit": "afe79359914750b18df668c75ff428b2b2c2cea4",
      "tree": "165ef32b8c070e3073532ee085985e14baef55a6",
      "parents": [
        "3abddeca75b0148671eb20d48a2ed5d4df5ac395"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Aug 30 15:37:20 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Aug 30 17:19:53 2017 +0900"
      },
      "message": "Shutdown more reliably\n\nAlso: collapse largely unused VDBG/DBG into just DBG.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - runtest framworks-net passes\nBug: 64914645\nChange-Id: Ifbb6b1ce18c52c9cb58c89b9661248a155f7b4a8\n"
    },
    {
      "commit": "b3bb26eaa790cc18f6383387975630c1ae35752a",
      "tree": "16eb52c60ed8164c7905fce7cc90f301d9db8987",
      "parents": [
        "ddce7ee20fcad91bd45f77222d762136587bc192"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jul 06 19:49:35 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Aug 23 20:55:47 2017 -0700"
      },
      "message": "Send add/removeDownstream info to offload HAL\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passed\nBug: 29337859\nBug: 32163131\n\nMerged-In: I0cb81ac054fc2bf6c8b8bfe658e9404a15091d7a\nMerged-In: I7abcdcc2d7d967179c47081a6db2b417164891f3\nChange-Id: I6c59aa7cb80b54f376f294b24c1409710c553d74\n(cherry picked from commit ed962a84122ab950a103fbbc0bf911f61b6b9500)\n"
    },
    {
      "commit": "c6a9b5564a066164ea9e09616fd45f1e94d305b0",
      "tree": "76fb29b3613676051fb9dbc245fa4241a935f96f",
      "parents": [
        "9335d2d0b114e9b7c5f5af634390daa609196a12",
        "5b218bdc8e41be24fed309a77059a587c236e3ad"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Aug 21 12:08:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 21 12:08:28 2017 +0000"
      },
      "message": "Merge \"IpManager: use InitialConfiguration for provisioning\"\nam: 5b218bdc8e\n\nChange-Id: I131589680b68222e4fda4e9165ac2f50894ee28e\n"
    },
    {
      "commit": "d00ddf567235e20bcbdc527ae20824fa944c3a64",
      "tree": "2b6e1ec60f2bf5d35a6bd518b4f5a87b07f60b45",
      "parents": [
        "23868e9c0976acd0d44e8bdc22b690e9b9ef8662"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Aug 08 13:08:06 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Aug 21 16:00:31 2017 +0900"
      },
      "message": "IpManager: use InitialConfiguration for provisioning\n\nThis patch changes IpManager to take into account static provisioning\ninformation specified in the InitialConfiguration for IPv6 static\nconfiguration.\n\nWhen a valid InitialConfiguration with IPv6 content is specified,\nIpManager will do the following things:\n\n- at start(), it will push the IPv6 addresses in the config to netd\n- it will observe all addresses be notified via Netlink\n- when all addresses are there, it will patch in the associated IPv6\n  routes in the config, so that they get passed to ConnectivityService\n  through the usual mechanism\n\nThe logic triggering onProvisioningSuccess is also changed to take into\naccount InitialConfiguration: when all addresses and all routes in the\nconfig are seen the provisioning is successful.\n\nBug: 62988545\nTest: runtest frameworks-net, with newly added tests\nChange-Id: I77ed7c576c4b198de7a4726be70c78b74689e98b\n"
    },
    {
      "commit": "39a707813b872711cddea1d2b8d6a3bbb73b3180",
      "tree": "edc1e8f15aa5dd6f2b9237e46885a34d03676773",
      "parents": [
        "3f3c4f6da47c15418bbc3ac22be0fdaf25a06022",
        "a9889c94aa98531e0bbd7303d07b1055257a8aea"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jul 25 14:33:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 25 14:33:45 2017 +0000"
      },
      "message": "Merge \"Bootstrap IpReachabilityMonitor unit tests\"\nam: a9889c94aa\n\nChange-Id: Ic3b145159a4c0430cc248a19b8527af40fa67696\n"
    },
    {
      "commit": "06b1f2b1737a63967bef19801d7f013812dba70f",
      "tree": "dcbbc4f560702a6242c81690fd9da14d2c16b66d",
      "parents": [
        "e8341b6148c6dc5676f214caf8f41bec42077893"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Jul 24 09:30:52 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jul 25 14:59:48 2017 +0900"
      },
      "message": "Bootstrap IpReachabilityMonitor unit tests\n\nBug: 62918393\nTest: runtest frameworks-net\n\nChange-Id: I236029f460dc3631ef9f5d8312dc1c6faf9807df\n"
    },
    {
      "commit": "70291ef1d79d62f7c55bf147c878f45db9d1a490",
      "tree": "3948135f11c2c8ae38cf664f9a6ac4121a58b874",
      "parents": [
        "5c091dc9449b583e18656a8850a61f557dfcc945",
        "d27a6d62c66c76bff60f746b7ecb3a04c432b94a"
      ],
      "author": {
        "name": "Ahmed ElArabawy",
        "email": "arabawy@google.com",
        "time": "Thu Jul 20 03:46:08 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 20 03:46:08 2017 +0000"
      },
      "message": "Merge \"Add Configuration to APF Policy\"\nam: d27a6d62c6\n\nChange-Id: I491bad86e4e9ae7a813ac214b06273719a583079\n"
    },
    {
      "commit": "8537c58cc8c07e39e016e217a4033a7652d84794",
      "tree": "eadfddf661eedd46912a6693d6c9471b3e792671",
      "parents": [
        "2627d4856be08bda40f6b50ba0974f8b875f4995"
      ],
      "author": {
        "name": "Ahmed ElArabawy",
        "email": "arabawy@google.com",
        "time": "Mon Jun 12 18:01:11 2017 -0700"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Jul 20 11:22:46 2017 +0900"
      },
      "message": "Add Configuration to APF Policy\n\nin b/37702435 battery was drained due to reception of\nEthernet frames with Eth-type \u003c 0x600 (non ehternet II frames)\n\nThis change adds an XML file to drop/allow these frames\nDropping helps tp avoid acquiring a wakelock for the\nreception of these packets, while allowing them may be needed\nfor some protocols\nThe Change allow the OEM to override the system settings\n\nBug: 37702435\nTest: runtest frameworks-net\nMerged-In: Idb6c215896ef230a8136ff4ecefc90ccdc5c1c6d\nMerged-In: I16346bb98a0b9259f7c3f51e318c472cfc1bb492\n\nSigned-off-by: Ahmed ElArabawy \u003carabawy@google.com\u003e\n\n(cherry pick from commit 4dd7c58fc8fcc5a2c50de5e8eff05ddc5c3b0b8b)\n\nChange-Id: Ie466baf1e6395d6c28245e41179232ea8e523845\n"
    },
    {
      "commit": "a428392c1ddb93cabf0186ea0507b1fbc5254c60",
      "tree": "bf4c6024d1456f06da1849be5639c14d61c785bf",
      "parents": [
        "791a698a6a5f6c6e8b37f43c38f0027af9ee70be",
        "4f2a0fe213e56d1eb4221a02a09571262ef8036a"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Jul 14 07:25:51 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Jul 14 07:25:51 2017 +0900"
      },
      "message": "resolve merge conflicts of 4f2a0fe213e5 to stage-aosp-master\n\nTest: I solemnly swear I tested this conflict resolution.\nChange-Id: I61cfb2d4798350f28f1bb36aed67ee8f18895031\n"
    },
    {
      "commit": "4f2a0fe213e56d1eb4221a02a09571262ef8036a",
      "tree": "82f02c150a2deb5a7d519bca891779f1bd3163c5",
      "parents": [
        "d8dab115478e46440b7d97d8f70d41fb64efd0a1",
        "fd31b9d46ea09dc7d74ddc03ab7e5ecfbe80b3dc"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 13 20:45:21 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 13 20:45:21 2017 +0000"
      },
      "message": "Merge \"IpManager: define InitialConfiguration\""
    },
    {
      "commit": "fd31b9d46ea09dc7d74ddc03ab7e5ecfbe80b3dc",
      "tree": "f113067dca4697fea38ddfe75457ca59ebb4f6dc",
      "parents": [
        "5bb30496cf381c6546cbf02a2c5b55adf046aeb8"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Jun 23 10:07:08 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Fri Jul 14 04:26:42 2017 +0900"
      },
      "message": "IpManager: define InitialConfiguration\n\nThis patch adds a InitialConfiguration class to IpManager for specifying\nIP information in IpManager ProvisioningConfiguration at IpManager\nstartup.\n\nAt the moment this InitialConfiguration is not used, but is validated in\nstartProvsiioning if ProvisioningConfiguration includes one. It will be\nintegrated into IpManager IP provisioning logic in follow-up patches.\n\nThis patch also includes an example of data driven unit tests using a\ntable of test case. The highlights of this methodology are:\n  1) easy extensibility for new test case,\n  2) rich and informative error messages,\nUnfortunately Java support for inlined data structure literals is poor\nand some companion static methods for data generation are required for\nenabling this methodology.\n\nBug: 62988545\nTest: added new test in FrameworksNetTests,\n      $ runtest frameworks-net\n      $ runtest frameworks-wifi\nMerged-In: I060b02603af7d73a6407df89344bf0c000574af2\n\n(cherry pick of commit 2757fcf3a13b0addc4a168a12c72ac2fc418b012)\n\nChange-Id: I48dbf89232d7758f1b07ed4d76ce93281e5c6b53\n"
    },
    {
      "commit": "ae21b8941453ce5973100671c2cb9ef9ff20394c",
      "tree": "f562e864f553e0d41134d4ccfecfcbb4432b38c4",
      "parents": [
        "8625194c19d6a2260b27c5c1870c66254c040c74",
        "de837a97aa9db9ae344a7c298012fa2c7b808b95"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jul 13 09:00:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 13 09:00:56 2017 +0000"
      },
      "message": "Merge \"Program offload-exempt local prefixes into the HAL\"\nam: de837a97aa\n\nChange-Id: I741b6e31fb3adc922f47df824188786ff35e3aa9\n"
    },
    {
      "commit": "5acb4e3b62c788bff1baa22ecb20f6b103cc8d93",
      "tree": "eff67776e701b9bf3666d83677e4d0b60e82d54a",
      "parents": [
        "2fa880d0162a206b9307bfd5cd37a37cf216895a"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Jul 04 18:28:11 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jul 13 16:43:34 2017 +0900"
      },
      "message": "Program offload-exempt local prefixes into the HAL\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - observed calls to the HAL setLocalPrefixes in tethering log\nBug: 29337859\nBug: 32163131\nMerged-In: I3c3bd4ee83ffe86ddbe6a16fbbfa0756bf5064d4\nMerged-In: Iaf80e584df458010741401fc1a19e7f6e21923c1\nMerged-In: Ifaf23c6179ead9de6ccfcf41e0c203025153167b\n(cherry picked from commit 32179ff81511e00aef31e8fda705be3df074ece6)\n\nChange-Id: I65ea833ac6fe7a75ebe546cfa358c4cffdf2de05\n"
    },
    {
      "commit": "97e7afe8d0c50741c185741847e9f08011bd51b5",
      "tree": "891b02bb0efb87d0fcc7a7684cac3e653f7455da",
      "parents": [
        "03e304e4e8abb6248a223a1cdfe9af4e365a5385",
        "9c170157a88f05bca60bb248307f5eca2560c35b"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Jul 10 13:43:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 10 13:43:02 2017 +0000"
      },
      "message": "Merge \"Make failure to set addrgenmode a non-fatal error.\"\nam: 9c170157a8\n\nChange-Id: Ia4074f720ce0db69c86cd58ddc574d595cfceeee\n"
    },
    {
      "commit": "00886760d7416940b76f34ad107ecd544715e914",
      "tree": "d19853cfcc068de4dc84fd925df4d34304890dd7",
      "parents": [
        "b355b7f446720245ce4e62739ad503f6a8ccea1b"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Jul 10 19:05:13 2017 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Mon Jul 10 19:10:35 2017 +0900"
      },
      "message": "Make failure to set addrgenmode a non-fatal error.\n\nBug: 17613910\nTest: bullhead builds, boots, connects to wifi\nChange-Id: I310dcacc6784c13904fca79b839b5f4d94bfc45e\n"
    },
    {
      "commit": "59079c2f8e34a2d827488d799777625c188b8122",
      "tree": "8119949fbd9f98433c0af1eee5eff087f7e37361",
      "parents": [
        "3b3f420481a7d5532b13c8ff1cdbc476247959a9",
        "a3ea0e2337c0a7b2b60d23c31a3f24bd9f555fe4"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jul 03 08:19:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 03 08:19:25 2017 +0000"
      },
      "message": "Merge \"Switch IpManager and IpReachabilityMonitor to use SharedLog\"\nam: a3ea0e2337\n\nChange-Id: I380551a59a1278df4cb6a0e7e590edae38e79881\n"
    },
    {
      "commit": "9e6655945a8bd322fed74769e4f1e8d017a0236c",
      "tree": "8ffec86484e7251becd611e12a606b409d15c157",
      "parents": [
        "1fbe96248220008984794326887a8eae42540641"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Jun 29 11:46:51 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Jul 03 16:08:28 2017 +0900"
      },
      "message": "Switch IpManager and IpReachabilityMonitor to use SharedLog\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - frameworks/opt/net/wifi/tests/wifitests/runtests.sh passes\n    - frameworks/base/wifi/tests/runtests.sh passes\n    - roamed from AP to AP watching IpRM logs accumulate\nBug: 62476366\nBug: 62162774\n\nMerged-In: I4bef3b6b1975fa3c73cca0a0e95fad99708f061e\nMerged-In: I265566158f3e5ebd21fb43e2eb0b8ba016fca76a\nChange-Id: I155a26259420919eeed74166bacce3311caa49da\n(cherry picked from commit 0fc10b2b1d7be649c80dda4ebdb2e31af216bfcc)\n"
    },
    {
      "commit": "834cf8d664d4955696555b7bc47dbe8d58d8164d",
      "tree": "1e76be357e03b4d4a423888874ebf93aae5bd75a",
      "parents": [
        "1fee4dcd5d761a7631acbc499b63138abf9f9f35",
        "2d2f66d277c3a8b28aa850917988d089221db23a"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Jun 26 12:07:12 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 26 12:07:12 2017 +0000"
      },
      "message": "Merge \"IpManager: always log immediate provisioning errors\" am: 98f2decdad\nam: 2d2f66d277\n\nChange-Id: If1e885c13ce7ec1f480add63940bf9bc929d5072\n"
    },
    {
      "commit": "61f54d3fcd3d12619b254223eb233bda6f8b6bf8",
      "tree": "a3fa3be788342c7139f07b0487fbac52fb2e78f6",
      "parents": [
        "91464bfe6809bf506fada1ec3822d0f9d69b5bef"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Jun 22 15:19:35 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Jun 26 10:47:19 2017 +0900"
      },
      "message": "IpManager: always log immediate provisioning errors\n\nAnd also migrate remaining Log.e usage to logError.\n\nBug: 62716267\nTest: built and flashed\nChange-Id: I61a6cec081d2bc0fe3d73e46fd52f1a42684e58c\n"
    },
    {
      "commit": "8a4667b911a53b0a73ef249f120dbfad4969b72b",
      "tree": "4f43df1487e6719ff65202eef78cd3cf1de84d8a",
      "parents": [
        "0ba9285c7db7e692e03ac79f7ebab1bc5ca871f0",
        "4c4d5477d4b15e23102b6ed8ebf052d37abcab3f"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Thu Jun 22 06:48:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 22 06:48:09 2017 +0000"
      },
      "message": "Merge \"Use RFC 7217 stable privacy addresses\" am: a88b12ce5e\nam: 4c4d5477d4\n\nChange-Id: I7f286484a31c7209e48e93a94d2a16849af6dace\n"
    },
    {
      "commit": "2db1074e4f747ee71e913cd890d385e563f23b5c",
      "tree": "71795956eea71d9748027de3bd8c03e20534ac62",
      "parents": [
        "4ff3cf1eca71e61896a6f4a493974113656f3fd5"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed Jun 07 15:38:38 2017 +0900"
      },
      "committer": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Thu Jun 22 13:31:06 2017 +0900"
      },
      "message": "Use RFC 7217 stable privacy addresses\n\nAsk Netd to setup WiFi interfaces to use stable privacy addresses. This\nshould fail benignly on devices with kernels lacking RFC 7217 support.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - Manually observed persistent stable secret\n    - Manually observed randomized IPv6 addresses (with flags \u003d 800)\nBug: 17613910\n\nChange-Id: I9465de16685b1eb0fd842446a530cf98d77a0c28\n"
    },
    {
      "commit": "5bb63befb8ce288a1d31bad4e19c1889fdb3e00d",
      "tree": "50114ca817c9fe6952c8d06907d08d496d933b32",
      "parents": [
        "0dc16ddee903020f9b90dfb9fa13fb4b2d5332a0",
        "ef0bd781b16550fa348f0f116a365f77bbe64797"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Thu May 25 00:18:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 25 00:18:44 2017 +0000"
      },
      "message": "Merge \"Ignore flow label when comparing RAs in APF\" am: 81fda77884 am: 6ccdb3fe19\nam: ef0bd781b1\n\nChange-Id: I53c2a493946ecc4e5617bcd3f5e64ff0b82fedf2\n"
    },
    {
      "commit": "967dec794b1974574d95c9d2dea0a0133fa19717",
      "tree": "1d73819480a46e306a3a14117fba57397bd16823",
      "parents": [
        "65d3a457d2152a431d158352257e3c846fc8a367"
      ],
      "author": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed May 24 15:08:39 2017 +0900"
      },
      "committer": {
        "name": "Joel Scherpelz",
        "email": "jscherpelz@google.com",
        "time": "Wed May 24 15:24:24 2017 +0900"
      },
      "message": "Ignore flow label when comparing RAs in APF\n\nThis change modifies the RA filter generation code to ignore bytes 1-3\nof the IPv6 header. It also updates testApfFilterRa such that it fails\nwithout the updates to ApfFilter.\n\nTest: as follows\n        - built\n        - flashed\n        - booted\n        - sent RAs from OS X with differing flow labels and observed\n\t      that they were filtered\n\t- ApfTest passes\nBug: 31166495\n\n(cherry picked from commit 7006bd4fe5eba4b6fad43dd28d9cad2d26ce140a)\n\nChange-Id: I32153238193ac13a0e59be1875d983a0567c41c7\n"
    },
    {
      "commit": "308ed7f4672c9b7e1aa594b95723410098c9b7a9",
      "tree": "2729a6eba77ce9665db4fa8d11ccdee7dffc81b1",
      "parents": [
        "a67ea35d9a3173e1829a1b1743a3a4fee19c544a",
        "945ff184c26648319bfcce2c314677eb2c71d861"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu May 18 03:54:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 18 03:54:30 2017 +0000"
      },
      "message": "Merge \"Expand logging capabilities of Tethering subsystem\" am: 0373340b07 am: 96f9371a66\nam: 945ff184c2\n\nChange-Id: Ia9d15f0dcc49ce070f8684eb8c8481310859faa5\n"
    },
    {
      "commit": "7747fd4ce055e8e1f6381062a58b867728f57d85",
      "tree": "fe367910f375a85bdda460a0b10d73f3b3aab6f9",
      "parents": [
        "8f65e470b0354f5fca3966f61a5995819609fbd2"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri May 12 16:52:48 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu May 18 09:46:45 2017 +0900"
      },
      "message": "Expand logging capabilities of Tethering subsystem\n\nIntroduce a SharedLog that can be shared among all Tethering\ncomponents.  All log entries go to the same log, and each includes\nits subsystem name.  Additionally, all entries emitted to the\nsystem log shared the same tag, so can easily be watched.\n\nMore subsystems can inherit a SharedLog, but to minimize cherry-pick\nconflicts we limit ourselves to these changes only.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - log output observed via dumpsys\n    - runtest frameworks-net passes\nBug: 32163131\nBug: 36988090\nBug: 38218697\nChange-Id: I1229d4c55987402d84b0d4a2c8a595e0c829aa3e\n"
    },
    {
      "commit": "211bd49c9d85bb2a669f7158fa24f7889c12a1d9",
      "tree": "9b38fa7fcebed8aec11522d3c368736d009f6a55",
      "parents": [
        "889bdc8dc9b695c0ffa5746c4c51ccf7df7fa3ce",
        "b1914ebb5041623a9d8c2fa542c6f58e71690951"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Apr 27 00:35:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 27 00:35:25 2017 +0000"
      },
      "message": "Merge \"Clarify some IpManager/ApfFilter debugging output.\" am: ce94c07ffd am: 3cc7ccfc69\nam: b1914ebb50\n\nChange-Id: If64f2b8a5cdf8b946a82a0c97a42cf61ef5e0b08\n"
    },
    {
      "commit": "af579eb5b516296a8ec0b02d824f2ba646e60ca2",
      "tree": "035189fcdd349dfe87cee4a4cafd48a1958c1cdd",
      "parents": [
        "3a8ad81ab42f030526cdf54d59a170d74478993e"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Apr 21 17:56:55 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Apr 26 17:14:47 2017 +0900"
      },
      "message": "Clarify some IpManager/ApfFilter debugging output.\n\nTest: as follows\n    - built\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\n    - \"adb shell dumpsys wifi ipmanager\" shows updated output\nBug: 34793131\nChange-Id: I6dec135b97343943efb421ef7b2e84c4751dd5ea\n"
    },
    {
      "commit": "7a0191b355f8374480c695a13c7b7bec9ce23d52",
      "tree": "6312ad61a36a18965f2637cbca25c5ac54af35f8",
      "parents": [
        "575523f2e70e7cb2a53c712bbb6e4e6514f920bc",
        "a80bb82b4eb189cbb74fbfb3eaa70bd80c0396a0"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Mon Apr 24 19:07:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 24 19:07:37 2017 +0000"
      },
      "message": "Merge \"Move byte logics from ApfFilter into BitsUtil\" am: 21b9b3a8ff am: 12c1074c8b\nam: a80bb82b4e\n\nChange-Id: I5f13b006b57cc8a3ab0560626077d003ce4fe8c8\n"
    },
    {
      "commit": "495a17b332e57ea4c0162a4ae63d820b947e3719",
      "tree": "9f53928fc478332032e0c44f6ac101e79a590b97",
      "parents": [
        "9910dbc682118d2527fc17d4b50e8dcb94318534"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Thu Jan 12 15:31:05 2017 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Sat Apr 22 10:07:03 2017 +0900"
      },
      "message": "Move byte logics from ApfFilter into BitsUtil\n\nThis patch extracts into BitUtils byte manipulation helper methods\nand unsigned type manipulation helper methods from ApfFilter into\nan independent and reusable structure.\n\nTest: $ runtest frameworks-net\nChange-Id: I0f33af10457a63dbde5983f14353a79b8cd877d9\n"
    },
    {
      "commit": "f700d5cad7ed9834dd16635d7626586e9912f6d0",
      "tree": "05786a5d04428be00d9a6633c753b4d1104adba4",
      "parents": [
        "db1de8dd64a1f2fadbb1965c6d84e6cfe63b4b5f",
        "f6626e812c7debe25c49b5eed6ec1663576641b4"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Apr 10 12:21:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 10 12:21:57 2017 +0000"
      },
      "message": "Merge \"Tethering: support Local-only Hotspot mode for downstreams\" am: d3128d4b55 am: 908ce167eb\nam: f6626e812c\n\nChange-Id: I79677f7e8e7ae5abec2a13b5e5391b8f07857a36\n"
    },
    {
      "commit": "ea9cc488eb0f096c9fd402eff49e3d30f5b6de2e",
      "tree": "454cce0aebf18e715f501b4e5fba11b1a24bf287",
      "parents": [
        "7a12f7efc79ba3848c82ebc7b74d1ada11f970e0"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Mar 10 19:35:34 2017 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Apr 10 19:11:08 2017 +0900"
      },
      "message": "Tethering: support Local-only Hotspot mode for downstreams\n\nTest: as follows\n    - built (bullhead)\n    - flashed\n    - booted\n    - \"runtest frameworks-net\" passes\nBug: 31466854\n\nChange-Id: Ia50e28c8ce0af8cdd7ac63217d921aff213668e7\n"
    }
  ],
  "next": "46aa9c022ed059f1e38f4dbf54d8850e090bce13"
}
