)]}'
{
  "log": [
    {
      "commit": "b8f2ab93623d9301ce4cf8ace6545908bcbae548",
      "tree": "b6ae486cdbe42609f2ce4d0e2b77bd2859c96e5b",
      "parents": [
        "bc18cc9b194f69e1d93b04637451f45d743bebb7",
        "8acc99a974a8c0a8f3e3ca3be06356b0f5e6f702"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Mar 12 01:37:26 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 12 01:37:26 2019 +0000"
      },
      "message": "Merge \"Use an in-process APK for in-process NetworkStack\""
    },
    {
      "commit": "a6f3476476104eed5c59d086da730092b3fe200e",
      "tree": "6ac5e3d28438ce2d95af903566d35aad65103893",
      "parents": [
        "e5e3ac639b08f1d88e7daaf4d7bcece26876ffc2",
        "12aaf7e2ef7e5a707a23992c03b75891f667bc1c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 15:55:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 08 15:55:53 2019 +0000"
      },
      "message": "Merge \"Give Telephony the permissions to access the network stack.\""
    },
    {
      "commit": "e5e3ac639b08f1d88e7daaf4d7bcece26876ffc2",
      "tree": "dbde0f37c605fa6c33ad62f6374e9619c671cfed",
      "parents": [
        "f635f126661cd5190ba852c96cdf14c9d30105eb",
        "ea89cf2c6e300dd66c34cab43a9fadf94cedf8dd"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 08 15:21:01 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 08 15:21:01 2019 +0000"
      },
      "message": "Merge \"Add junyulai@ as owner of the core networking dirs\""
    },
    {
      "commit": "ea89cf2c6e300dd66c34cab43a9fadf94cedf8dd",
      "tree": "070eaa1bb801eda55dd0a166b2f33845033188a5",
      "parents": [
        "1b9adbfdd1f18cb16e82f9a6f158d3ac242fffa1"
      ],
      "author": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 08 20:28:35 2019 +0900"
      },
      "committer": {
        "name": "Bernie Innocenti",
        "email": "codewiz@google.com",
        "time": "Fri Mar 08 13:04:05 2019 +0000"
      },
      "message": "Add junyulai@ as owner of the core networking dirs\n\nAlso removed emeritus accounts ek@ and silberst@ from various places.\nA cleanup using \u0027include\u0027 would probably be in order...\n\nTest: N/A\nChange-Id: I575e60dd5e600e42d9571ce8e8d7661d30e99bfe\n"
    },
    {
      "commit": "12aaf7e2ef7e5a707a23992c03b75891f667bc1c",
      "tree": "4e7230f676bebe4449a5a5e0f584fb4fafb93619",
      "parents": [
        "58038da960ef93976a76b5e4348033fcd0843294"
      ],
      "author": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 08 19:46:00 2019 +0900"
      },
      "committer": {
        "name": "Chalard Jean",
        "email": "jchalard@google.com",
        "time": "Fri Mar 08 20:43:10 2019 +0900"
      },
      "message": "Give Telephony the permissions to access the network stack.\n\nTest: manual\nChange-Id: I28308f421aa955fe110b50452b115a0178b24745\n"
    },
    {
      "commit": "8acc99a974a8c0a8f3e3ca3be06356b0f5e6f702",
      "tree": "d54c00bbf3aea4a18779ccefb70dd101604ea08c",
      "parents": [
        "5026c9ea2868e879b598e61561313b2b1af44e27"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 08 17:20:49 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Mar 08 19:18:40 2019 +0900"
      },
      "message": "Use an in-process APK for in-process NetworkStack\n\nInstead of having a library in the classpath where the NetworkStack is\ncreated by reflection on devices using the network stack in-process,\njust bind to a version of the network stack service that runs in the\nsystem process.\n\nIf the in-process version is installed it will be used, otherwise the\nmodule is used with its own process.\n\nBug: 127908503\nTest: blueline boots and has functional WiFi\nTest: atest FrameworksNetTests NetworkStackTests\nTest: svelte build boots and has functional WiFi\nChange-Id: I7722b173e5686e0dbb9cfddcfb34344b0f4135d9\n"
    },
    {
      "commit": "086779de1125bc4a0f44220cf8c56e5d5521862d",
      "tree": "823b861a703ebd63d6a5649fe1bd27a8866cd70c",
      "parents": [
        "c8dfb728917c68d9cf4638fb05e4ddbe5ae8f80c"
      ],
      "author": {
        "name": "Jimmy Chen",
        "email": "jimmycmchen@google.com",
        "time": "Thu Mar 07 14:15:36 2019 +0800"
      },
      "committer": {
        "name": "Jimmy Chen",
        "email": "jimmycmchen@google.com",
        "time": "Fri Mar 08 16:34:20 2019 +0800"
      },
      "message": "IPv6: enable IPv6 link local routing for local network\n\nIPv6 link local is an automatically configured address. The routing should be\nactivated regardless of the DHCP service.\n\nBug: 126063997\nTest: Unit tests - atest FrameworksNetTests\nTest: Unit tests - atest FrameworksWifiTests\nTest: * DUT1 enables hotspot\n      * DUT2 associates to DUT1\n      * use ping6 to verify the local link on both side\nTest: * DUT1 creates a P2P group\n      * DUT2 joins this group as a legacy client\n      * use ping6 to verify the local link on both side\n\nChange-Id: I102bf29e8da14808097e43c840d74d41b6b3758f\n"
    },
    {
      "commit": "b7bda39d90e291ec9d22aba12edf0f8b503722c6",
      "tree": "6ddefd33f12eee3ffcea82e0000e52bd2ca377f6",
      "parents": [
        "7c447498c38f633718d2a95adef3a0609e86862e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Mar 06 18:02:34 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Mar 06 18:02:34 2019 +0900"
      },
      "message": "Fix SocketUtils API\n\n - connect, sendTo, bind were added as public API, so do not need to be\n   maintained as SystemApi in SocketUtils. These APIs were added in Q\n   timeframe.\n - Add @Nullable/@NonNull annotations.\n\nBug: 126699304\nBug: 126477266\nTest: booted, WiFi works\nChange-Id: I3f086ac8952cfd6a4d8f861d2e1c7aa1ca8be999\n"
    },
    {
      "commit": "1d8977b9922649ef9ecd0ba054c2bdf868ccfd56",
      "tree": "7bee56a61afccdce641a41a8d07f78174390629d",
      "parents": [
        "233b4f140b9d26a1387351b73990cd0572251c37",
        "6dea37dc6e1f8723a774cd203cb99c48079603e7"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Feb 22 07:39:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 22 07:39:20 2019 +0000"
      },
      "message": "Merge \"Fix RouterAdvertisementDaemon thread leakage problem\""
    },
    {
      "commit": "6dea37dc6e1f8723a774cd203cb99c48079603e7",
      "tree": "ce8f76390cf25f2cbffc678043ec3eb343ab6159",
      "parents": [
        "5cf41e47fe12ccbe110eb01ac788b627bdc89965"
      ],
      "author": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Fri Jan 25 13:36:34 2019 +0800"
      },
      "committer": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Thu Feb 21 09:19:29 2019 +0000"
      },
      "message": "Fix RouterAdvertisementDaemon thread leakage problem\n\n[Prerequisites]\nDefault value of mRaLength is 0, so getNextMulticastTransmitDelaySec()\nreturns DAY_IN_SECONDS (1 day) in this scenario.\n\n[Issue Details]\nExamine MulticastTransmitter.run() for detail:\n\n676        public void run() {\n677            while (isSocketValid()) {\n678                try {\n679                    Thread.sleep(getNextMulticastTransmitDelayMs());\n\nInvoke RouterAdvertisementDaemon.stop() here. Since MulticastTransmitter\nis in a sleep, this thread will pend 1 day until the next check of\nisSocketValid() triggers the quit action, which causes thread leakage\nduring Wi-Fi Hotspot on/off stress test.\n\n680                } catch (InterruptedException ignored) {\n\n[Solution]\nInvoke maybeNotifyMulticastTransmitter() after closing socket in\nRouterAdvertisementDaemon.stop() to interrupt MulticastTransmitter from\nwaiting.\n\nBug: 123491872\nTest: FrameworksNetTests\n  adb shell am instrument -w com.android.frameworks.tests.net\nTest: CTS - CtsNetTestCases\n  ANDROID_BUILD_droid-cts/tools/cts-tradefed run cts -m CtsNetTestCases\nTest: CTS - CtsNetTestCasesLegacyApi22\n  ANDROID_BUILD_droid-cts/tools/cts-tradefed run cts -m\n  CtsNetTestCasesLegacyApi22\nTest: CTS - CtsNetTestCasesLegacyPermission22\n  ANDROID_BUILD_droid-cts/tools/cts-tradefed run cts -m\n  CtsNetTestCasesLegacyPermission22\n\nChange-Id: I0c0d63b43a88e1026aaecfc1853309ad63f62268\n"
    },
    {
      "commit": "a25379f577698a32ba3f82dfe80ee3e307253ff6",
      "tree": "f34b507f7dfa3183d6ee9cad7879589e38e62649",
      "parents": [
        "256298eb94d34fd7e76ba4f0e4528d433e68ceac"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Feb 18 11:20:28 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 21 17:09:12 2019 +0900"
      },
      "message": "Add logging to NetworkStackClient\n\nThe current logging relies on the system log that may rotate. This is a\nproblem to investigate bugs where the network stack service is not\nstarted. Add a SharedLog to NetworkStackClient and dump it in\nConnectivityService (for lack of a better place to dump it).\n\nBug: 124307802\nTest: Booted, dumpsys connectivity shows the log\nChange-Id: If596451d0613645f68a8a32acb032eea76ea506c\n"
    },
    {
      "commit": "256298eb94d34fd7e76ba4f0e4528d433e68ceac",
      "tree": "f291ed448dccb86f0cbf28646b8e2ddad6ff10e3",
      "parents": [
        "e4a40c77e1dc2a45dc77f129bb08c971b8b8d686"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 21 17:07:57 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 21 17:07:57 2019 +0900"
      },
      "message": "Change getPackageUid to getPackageUidAsUser\n\nThe wrong overload of PackageManager is being called, setting\nUSER_SYSTEM as flag instead of the user to resolve the network stack\nUID.\n\nTest: phone boots, WiFi works, additional tests in child CLs\nChange-Id: I89b11b38c390d0e77a5917c74daccccd74c2d0a3\n"
    },
    {
      "commit": "1b57e8e9db5b007c19b713e9d1d3b28397a11b52",
      "tree": "d946ddd5d675ff98d62a3a68b45d9bf60f5c5ae0",
      "parents": [
        "5db454c28d3ddf724be3f6a697267f7f58d94e2d"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 14 18:19:14 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Feb 15 17:30:07 2019 +0900"
      },
      "message": "Fix framework and NetworkStack classes conflicts\n\nClasses that are used in framework.jar cannot be linked in NetworkStack,\nas the framework takes precedence in the classpath. This prevents the\nnetworkstack from using these classes due to the hidden API usage\ndetection.\n\nDo the following:\n - jarjar any shared source file between framework and NetworkStack, so\n   the version in the NetworkStack uses a different package.\n - Move any shared class not used in the NetworkStack to services.net\n\nThe CL  uses jarjar on the app copy and not the framework classes, as\nthe framework cannot be updated without an OTA, and non-network stack\nspecific classes should not be renamed because of the network stack.\n\nTest: atest FrameworksNetTests NetworkStackTests\nTest: flashed svelte build, WiFi works\nBug: 124033493\nChange-Id: I85d888b756adc28c36638913632bfdfdbf0e0486\n"
    },
    {
      "commit": "5db454c28d3ddf724be3f6a697267f7f58d94e2d",
      "tree": "d1ca0b863c669aa3db022ad222aab607bc0801de",
      "parents": [
        "cfff01e2dbece7fd6a45f0352c4ab292cf59b89e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 14 18:04:20 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Feb 15 12:20:17 2019 +0900"
      },
      "message": "Move NetworkStack to services.net\n\nNetworkStack is only used in services.net or clients of services.net. It\ncannot stay in framework.jar because it needs to depend on AIDL\ninterfaces, which would conflict with app implementations if they were\nin framework.jar.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 124033493\nChange-Id: Ib1d08a3669983640119d008db7e2990fa798724f\nMerged-In: I501b125a388c1100c2182bde4670944c2f0d7a02\n"
    },
    {
      "commit": "dacee147b482e17308be0977765e8135b37b9690",
      "tree": "99b2ea87ee96e4349d448e10220cab03a606f3f9",
      "parents": [
        "b8493ac5eb11ccc243b04cc3a3424858c472ef38"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Feb 13 18:28:35 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Feb 14 17:26:59 2019 +0900"
      },
      "message": "Remove deps from framework on netd interfaces\n\nIf included in framework.jar, the interfaces conflict with any app that\nneeds to depend on them, including the NetworkStack.\n\nBug: 124033493\nTest: atest FrameworksNetTests NetworkStackTests\nChange-Id: I2db9f87b7154130726d4700b241d55b041635d98\nMerged-In: I0ecae20d514bf888f3a80331f19369ceb1c52aa3\n"
    },
    {
      "commit": "231b52bc03750eb49b615fb110d91f6529c922b1",
      "tree": "f493100f461e573e00b2548afd62941d247220ec",
      "parents": [
        "9fdc6d296378bd17432ba1de507c83f4c3b8ed3a"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 29 15:38:52 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 30 10:23:24 2019 +0900"
      },
      "message": "Remove last NetworkStack usage of hidden APIs\n\nIncludes various small changes to stop using hidden APIs\n\nTest: make NetworkStack\nTest: flashed, booted, WiFi and tethering working\nBug: 112869080\nChange-Id: Id2830795a444f484b377ed6437435a1cd833697a\n"
    },
    {
      "commit": "9fdc6d296378bd17432ba1de507c83f4c3b8ed3a",
      "tree": "54cc6946a0a6ac57ec2e04c7c63fbf1a3107366d",
      "parents": [
        "4a838a68d6f5ccde33e87951405358583543be0b",
        "bfd0aa022e015d77ecd66bbe4e1ad2d649850187"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 29 14:30:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 29 14:30:56 2019 +0000"
      },
      "message": "Merge \"Revert \"Extract network observer code from NetworkManagementService.\"\""
    },
    {
      "commit": "bfd0aa022e015d77ecd66bbe4e1ad2d649850187",
      "tree": "9b95b502fd80a310289644e1cdde49ee048df2d8",
      "parents": [
        "d8bc829a85c9c9bb390e18b59ef1455b6d0b94ec"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 29 04:03:38 2019 +0000"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 29 10:21:19 2019 +0000"
      },
      "message": "Revert \"Extract network observer code from NetworkManagementService.\"\n\nThis reverts commit d8bc829a85c9c9bb390e18b59ef1455b6d0b94ec.\n\nReason for revert: Refactoring was unnecessary\n\nMerged-In: Ib4e7da3274e49f25676505a08e6ce7e7b0dfdb8d\nChange-Id: Iff332c680315b560f0b762c1d7311ec83d539115\n"
    },
    {
      "commit": "b8bbc48dee9db0d98a4e0fae6e9e6792ef10e387",
      "tree": "64c437b4a8d27928e989b33f0c856f065bdc6359",
      "parents": [
        "375b3c075daf2d13bacd4dd74e645b5bdd5ec9fc",
        "e88516f13b2cf4cf51e133eb0580f6ca4f4904e8"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 09:06:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 09:06:20 2019 +0000"
      },
      "message": "Merge \"Move NetworkUtils used by NetworkStack\""
    },
    {
      "commit": "e3f18bd77ca924c4b2e0faadc2515eb31c3e78ac",
      "tree": "3b21dabc30e60f7c458d107bee58c8d874ed0a6f",
      "parents": [
        "9188b4925936d45f314e77eb5edf0c598a848177",
        "31935985664c783b7b210c8481bfff808d4f73c1"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 08:27:02 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 08:27:02 2019 +0000"
      },
      "message": "Merge \"Add INetd to SystemServiceRegistry\""
    },
    {
      "commit": "9188b4925936d45f314e77eb5edf0c598a848177",
      "tree": "3d4dd930e9fdfdcbaaca1854fd379c9f065fd6a9",
      "parents": [
        "223d6815035b8f4a8cba7bae2c8a5a6fa7ccd63e",
        "a4bcc86dbe2b271547ce027a76b1a003aaf9918c"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 08:12:55 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 08:12:55 2019 +0000"
      },
      "message": "Merge \"Add NetworkStack networking deps to SystemApi\""
    },
    {
      "commit": "e88516f13b2cf4cf51e133eb0580f6ca4f4904e8",
      "tree": "ce33aba620e23fa7f114aac988b4fdd4ecb60ff3",
      "parents": [
        "9d3ce3e55ea4c1e0e3006c535f3ce9bccd5b8134"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 09:35:10 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 13:45:17 2019 +0900"
      },
      "message": "Move NetworkUtils used by NetworkStack\n\nDepending on usage move into NetworkStackUtils or shared\nInet4AddressUtils.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nMerged-In: Ie20dcee375b377236004a7689890729493aca857\nChange-Id: Ib8d000529872796022706a35050fdc2c7141f2ab\n"
    },
    {
      "commit": "a4bcc86dbe2b271547ce027a76b1a003aaf9918c",
      "tree": "87f7d589be36365c536a9e278860a5098de0ffa4",
      "parents": [
        "166c3aa03049a1b3716b4e0de2c8b5a37e387e5f"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 13:28:35 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 13:28:35 2019 +0900"
      },
      "message": "Add NetworkStack networking deps to SystemApi\n\nCherry-pick with conflicts fixed in CaptivePortalLoginActivity imports.\nTest: atest FrameworksNetTests\nBug: 112869080\nMerged-In: Id59dc06fb85e4ac88098f56b621ec880610759ce\nChange-Id: I3c05e8fdd70497426d4fa433295c4fbdad07d9c9\n"
    },
    {
      "commit": "31935985664c783b7b210c8481bfff808d4f73c1",
      "tree": "f6685bead8405ad2f06a75979497f284b19046a2",
      "parents": [
        "166c3aa03049a1b3716b4e0de2c8b5a37e387e5f"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 11:40:08 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 28 12:13:08 2019 +0900"
      },
      "message": "Add INetd to SystemServiceRegistry\n\nIncludes @SystemApi for Context.NETD_SERVICE so system apps (including\nthe network stack) can obtain the service.\n\nTest: m\nBug: 112869080\nChange-Id: Ida63747cd30abb7b3c19559803353eb0e42e6efa\n"
    },
    {
      "commit": "bc19ab1553085d44442f837ff6f83c4c0e446630",
      "tree": "dd57c324892193c802ef322ce4be1b31a208432a",
      "parents": [
        "166c3aa03049a1b3716b4e0de2c8b5a37e387e5f"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jan 25 15:07:04 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jan 25 15:07:04 2019 +0900"
      },
      "message": "Remove IpClient wrapper\n\nThe wrapper was useful to help clients migrate out of the old API, but\nall clients are now migrated.\nIt also conflicts with IpClient in the NetworkStack on Go devices.\n\nTest: Flashed, booted, WiFI works\nBug: 123371264\nChange-Id: Ibf04ad9371a07d2c66c478547539ba41c540116f\n"
    },
    {
      "commit": "d8bc829a85c9c9bb390e18b59ef1455b6d0b94ec",
      "tree": "8d95958379f6306211b7420bfb5642275e68b421",
      "parents": [
        "943619d506a3f80aa7a90b6f0e3c9bb37e0841b7"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Thu Jan 24 13:28:50 2019 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Fri Jan 25 00:41:57 2019 +0900"
      },
      "message": "Extract network observer code from NetworkManagementService.\n\nThis will allow us to use network observers in the NetworkStack\napp without duplicating too much code.\n\nBug: 112869080\nTest: atest FrameworksNetTests\nTest: builds, boots, wifi works\nChange-Id: If54fa3a88110ffa815899d385dbb0d5770abaead\n"
    },
    {
      "commit": "e693d49c0a46611d18afb69701277318958a0e9c",
      "tree": "cef829ed144da7a674de0f541ccaa14db7aee7f1",
      "parents": [
        "78cccf728dea2952185c83c5f03bd54418cb98a8",
        "c6304b87416882a9ed71069de0572fb3181c734c"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 23 15:05:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 23 15:05:00 2019 +0000"
      },
      "message": "Merge changes I1250730c,I7d00848c\n\n* changes:\n  Create a wrapper for IpClient\n  Move IpClient to NetworkStack\n"
    },
    {
      "commit": "e62097f71d7719df24430e1e1405ba4ecaaf4b01",
      "tree": "c45828c41067694b9f90af6e4d65ce8ef0a68015",
      "parents": [
        "98f0c3091178ed19c66d33213882a27460873422",
        "ed3168e9e35eb0f779dd6b86c842d4fbf5ac2932"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 23 12:29:40 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 23 12:29:40 2019 +0000"
      },
      "message": "Merge \"Stop depending on the ConnectivityService default request.\""
    },
    {
      "commit": "ed3168e9e35eb0f779dd6b86c842d4fbf5ac2932",
      "tree": "d22d628ccc95c750d45c4ebc4aaa2075ae9937f1",
      "parents": [
        "06adb08d273023a71d480a0362fc06f6569ddee3"
      ],
      "author": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 23 17:54:08 2019 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Wed Jan 23 18:10:06 2019 +0900"
      },
      "message": "Stop depending on the ConnectivityService default request.\n\nThis avoids the need to expose ConnectivityService implementation\ndetails as @SystemApi and the complexities that would be required\nto make NetworkCapabilities parcelable in stable AIDL.\n\nBug: 112869080\nTest: atest FrameworksNetTests NetworkStackTests\nChange-Id: Icd5d25b9b8e9b7a7d1899b000c92dc4976c3b3d7\n"
    },
    {
      "commit": "c6304b87416882a9ed71069de0572fb3181c734c",
      "tree": "f77bd92277dc7289c3830c0757ef0fa1f9262461",
      "parents": [
        "3c600a15a1ab35272405c8902a6ab92e46f18ce4"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 23 16:24:30 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 23 16:44:32 2019 +0900"
      },
      "message": "Create a wrapper for IpClient\n\nThe wrapper allows migrating clients of the IpClient in the NetworkStack\nindependently.\n\nTest: atest FrameworksNetTests NetworkStackTests FrameworksWifiTests\nBug: 112869080\nChange-Id: I1250730c07166298bee2816f05351ba95416994a\n"
    },
    {
      "commit": "3c600a15a1ab35272405c8902a6ab92e46f18ce4",
      "tree": "63b8da5a5d0a58c0ae89d585ad13de4b6e1e16ab",
      "parents": [
        "625a1f4461870548686801996a791cf6cd9a8bbb"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Jan 10 19:12:46 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 23 16:44:21 2019 +0900"
      },
      "message": "Move IpClient to NetworkStack\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: b/112869080\nChange-Id: I7d00848c052382cd1b6ce458868bed6a1e9e8ec5\n"
    },
    {
      "commit": "97f69c2f8d55e9da4ce26c0bf7180c01dce1cb54",
      "tree": "7bec6cb08e0ee2b1d952da0f2571e2b226594cc7",
      "parents": [
        "89e53d81ce97b098a4cfaa6e9acbfb336fa4b83a"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 20:35:06 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 15:57:34 2019 +0000"
      },
      "message": "Add getAvoidBadWifi system API\n\nThis helps remove the dependency on MultinetworkPolicyTracker from\nIpClient.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: If56791dbed564772f25a859f301b8b52d84e38a3\n"
    },
    {
      "commit": "06adb08d273023a71d480a0362fc06f6569ddee3",
      "tree": "091c49c5a75238eaaff5e6f38ad0087327c67463",
      "parents": [
        "491f53523a74cba5e84122aaeb079c31b6e5fe17",
        "d1b51a3228c755f4bd732a07053d2f360600cb3f"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 13:14:06 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 13:14:06 2019 +0000"
      },
      "message": "Merge \"Remove InterfaceController dependency on NMS\""
    },
    {
      "commit": "491f53523a74cba5e84122aaeb079c31b6e5fe17",
      "tree": "57d3c90a310afa5bec99359d139292d4038f1d10",
      "parents": [
        "91c81c13b6bad1c34405b7a86d605479cd049d2e",
        "c1c02dcb65928bc77883551fb8ead901fcccca5e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 13:00:10 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 13:00:10 2019 +0000"
      },
      "message": "Merge changes Ieef54d84,Ica3e88c2\n\n* changes:\n  Remove NetworkStack dependencies on hidden members\n  Expose ServiceSpecificException as @SystemApi.\n"
    },
    {
      "commit": "91c81c13b6bad1c34405b7a86d605479cd049d2e",
      "tree": "63b3310910ed21ffff8722997d89ebf386213b70",
      "parents": [
        "0f5893ee605099240e7481d79e1ce9ce25af115c",
        "811f6385be0764b4a16ad35276688da5ffc754c3"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 12:38:33 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 12:38:33 2019 +0000"
      },
      "message": "Merge \"Add SystemApi utility for raw sockets.\""
    },
    {
      "commit": "d1b51a3228c755f4bd732a07053d2f360600cb3f",
      "tree": "efbe4da29e907664195b793d9a483fe5060e5a61",
      "parents": [
        "8586a43f31d745f2327a481247b09b06717aaaac"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 16:13:57 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 20:25:48 2019 +0900"
      },
      "message": "Remove InterfaceController dependency on NMS\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: Ib3773068b087f58f4ac3394291cda132b00b2dcc\n"
    },
    {
      "commit": "c1c02dcb65928bc77883551fb8ead901fcccca5e",
      "tree": "4cdc9448a0de98df1b34bc6ea3ddfc4caa8f5a4e",
      "parents": [
        "a27da72cd1b03cf99cbe810c985a9c8bde1cbbb5"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 16:50:42 2019 +0900"
      },
      "committer": {
        "name": "Lorenzo Colitti",
        "email": "lorenzo@google.com",
        "time": "Tue Jan 22 18:48:12 2019 +0900"
      },
      "message": "Remove NetworkStack dependencies on hidden members\n\n - DhcpClient only shares its handler with IpClient, and NetworkMonitor\n   has its own handler: remove Protocol.BASE_DHCP,\n   Protocol.BASE_NETWORK_MONITOR\n - Remove dependency on Network.netid in NetworkMonitor\n - Remove dependency on Sets.newArraySet in DhcpServingParams\n - Remove dependency on formatDuration() in DhcpClient\n - Replace isMetered() with hasCapability() in NetworkMonitor\n - Use WifiManager.isScanAlwaysAvailable instead of reading setting\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: Ieef54d847ddc081fb33cbad0b050b06d2e52548e\n"
    },
    {
      "commit": "811f6385be0764b4a16ad35276688da5ffc754c3",
      "tree": "8deaf04b3659e32faf6fabe7188dda81b63e7d5d",
      "parents": [
        "8586a43f31d745f2327a481247b09b06717aaaac"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 12:08:21 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 17:50:33 2019 +0900"
      },
      "message": "Add SystemApi utility for raw sockets.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: Id228bf3317b6933314174571697ee256b2f18452\n"
    },
    {
      "commit": "94a055737efbec96029c3ce912ec0a476674aca4",
      "tree": "a77ef2c01ace456fd210c6fea2bd2acd628161b7",
      "parents": [
        "8586a43f31d745f2327a481247b09b06717aaaac"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 12:38:10 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 16:57:16 2019 +0900"
      },
      "message": "Add LinkProps and NetworkCaps methods to SystemApi\n\nAdded methods are used by the NetworkStack.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: I8822d43c1a4981ca39289525685b3f975fb0e8d5\n"
    },
    {
      "commit": "8586a43f31d745f2327a481247b09b06717aaaac",
      "tree": "efb15a4088178f62a8d886a55026a32ec22f3e62",
      "parents": [
        "9325fbc4f85123bc79eeeacda0de6dfb00d3264e",
        "7b84fb336f92c71fa4dd7a8bfe662966f954fa33"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 07:48:39 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 07:48:39 2019 +0000"
      },
      "message": "Merge \"Add NetworkStack metrics to system API\""
    },
    {
      "commit": "e7e9f2befe9604b42bc778c0ceaa26e4fc88d4dd",
      "tree": "61d244990ead8e84889a8f62b3d192665c0a44f2",
      "parents": [
        "3f4873baef7a4d700d107fb8e55530528a4aab15"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jan 18 19:05:29 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 13:12:08 2019 +0900"
      },
      "message": "Fix lint errors for moving IpClient to NetworkStack\n\nTest: checklint at upload, m\nBug: 112869080\nChange-Id: I82fb9c9037cc0a9d3c80958d64552ff1ef0a90ab\n"
    },
    {
      "commit": "60b9ad2ec300c03fe09c0d695a0948f4363b6a26",
      "tree": "85de7ea40d363ad5754b98b763f43c7ae95e52c1",
      "parents": [
        "33a04d0ff9aebc49662d03c94af7a62abbbce9a7",
        "a5d31f53b67efe91da0911e792825020d16eb7bb"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 22 01:10:17 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 01:10:17 2019 +0000"
      },
      "message": "Merge \"Add IIpClient API for IpClient\""
    },
    {
      "commit": "7b84fb336f92c71fa4dd7a8bfe662966f954fa33",
      "tree": "6c45563fe34b84d5ba752e00e4ff50c239bc489d",
      "parents": [
        "1f4cce2f198308a0c8ee375503225ed1f6e1f2f4"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sat Jan 19 21:13:24 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 21 23:24:41 2019 +0000"
      },
      "message": "Add NetworkStack metrics to system API\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: 112869080\nChange-Id: Ie52c55f248c173e2a5ee603ecd004fbac9004ac1\n"
    },
    {
      "commit": "79a6d5e30c02509ba3241d66324b9d9386b42a15",
      "tree": "1803f694b57b888d550242a9606367a5d1100f0a",
      "parents": [
        "b4a450a13c0f3731574f2cf11047f2097cbd2837",
        "31f1d0cd8dcf092b3bfcdf51bdde125b4a03c012"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 21 23:20:26 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 21 23:20:26 2019 +0000"
      },
      "message": "Merge \"Add fields used by NetworkStack to the API\""
    },
    {
      "commit": "31f1d0cd8dcf092b3bfcdf51bdde125b4a03c012",
      "tree": "5003fa4b4f7d1bb8633659534ea20a0e60ee7394",
      "parents": [
        "1f4cce2f198308a0c8ee375503225ed1f6e1f2f4"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sun Jan 20 12:52:43 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 21 23:03:25 2019 +0900"
      },
      "message": "Add fields used by NetworkStack to the API\n\nTest: m\nBug: 112869080\nChange-Id: I59f6d5ae8a601b7496548b87f137a577f2365a37\n"
    },
    {
      "commit": "c2c7ee1963c93a252ca3d75beb540d1e7edaa530",
      "tree": "65603cd5b2f1f76a3744425c5ce851891658a6d5",
      "parents": [
        "ca046e898b500c48b5e5412d49bf4f51aa637d98"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Jan 21 10:34:19 2019 +0000"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Jan 21 11:34:34 2019 +0000"
      },
      "message": "Replace uses of libcore.io.SizeOf with X.BYTES.\n\nlibcore.io.SizeOf is an internal API and is going away soon.\n\nNote: The files touched by this CL have some other unused\nimports which I did not touch. Therefore I had to use\n\"repo upload --no-verify\" to upload this CL to gerrit.\n\nBug: 123174577\nTest: Manually checked that this CL applies cleanly in internal\n      master and that no other uses of SizeOf then remain in\n      internal master\u0027s frameworks/base\nTest: Treehugger\nChange-Id: Ib29a195f3dda2f21ebbe2f7073e0af4dbb524b19\n"
    },
    {
      "commit": "a5d31f53b67efe91da0911e792825020d16eb7bb",
      "tree": "b6e060e2e76c20342e1f1bf4dc9a3201ba1b9ead",
      "parents": [
        "6b0b2b735eb42f87319a91cc7822e78ce2296186"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Sat Jan 12 15:36:47 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 21 18:25:46 2019 +0900"
      },
      "message": "Add IIpClient API for IpClient\n\nThe API will be used to interact with IpClient once it is moved to the\nNetworkStack process.\nThis change keeps compatibility with the previous API so that clients\ncan be migrated independently.\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: b/112869080\nChange-Id: I57d8164afae849230bbc0e25f17859c0b22d0f29\n"
    },
    {
      "commit": "6b0b2b735eb42f87319a91cc7822e78ce2296186",
      "tree": "b6b0c9e6f400f3306c52b4f40c9fa02c81b33e3a",
      "parents": [
        "1f4cce2f198308a0c8ee375503225ed1f6e1f2f4"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jan 18 18:49:16 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 21 12:54:24 2019 +0900"
      },
      "message": "Add stable AIDL parcelables for IIpClient API\n\nTest: atest FrameworksNetTests NetworkStackTests\nBug: b/112869080\nChange-Id: Ia4ac1eb482850a06c4dc1b6c1fe55d33d4087388\n"
    },
    {
      "commit": "4855a2e2c6eb5143e41b221a2062b43349bd182d",
      "tree": "cf9796ea776a94b374d0d7df7230014faafa5001",
      "parents": [
        "be8881da3ba92405522f80fad1d93459e899dea2"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 08 10:46:21 2019 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Jan 17 13:11:12 2019 +0900"
      },
      "message": "Add stable AIDL parcelables for LinkProperties\n\nTest: atest android.net.shared.LinkPropertiesParcelableUtilTest\nBug: b/112869080\nChange-Id: I2b69980e25bae9f51fb5b8cd3cafb403e6bd53da\n"
    },
    {
      "commit": "e67b0c3aee8db22662e904441c0c3e113ee5c539",
      "tree": "a1e9f9c7a3c43f101116c89fe74238387ddcbe51",
      "parents": [
        "dcfef16295126c0197e5e1f6449280efdf787fea"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Dec 27 16:43:56 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jan 11 09:59:11 2019 +0900"
      },
      "message": "Move NetworkMonitor to NetworkStack\n\nBug: b/112869080\nTest: atest FrameworksNetTests NetworkStackTests\nChange-Id: I1b8b6a3f4390adbabf92fb9e48da61c47b08b2ec\n"
    },
    {
      "commit": "0e3d0923a65d654c57bd0ce24d84a257702e83db",
      "tree": "1e6af187f61e4165899fb74ab139b25f196b5e3f",
      "parents": [
        "5dbf0574365254e9b5aee3919b5ee0563a92ba80"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Dec 04 12:13:09 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jan 09 15:42:16 2019 +0900"
      },
      "message": "Move DhcpServer to NetworkStack app\n\nTest: atest FrameworksNetTests \u0026\u0026 atest NetworkStackTests\nBug: b/112869080\n\nChange-Id: I96c40e63e9ceb37b67705bdd4d120307e114715b\n"
    },
    {
      "commit": "73105e1143b30f42317e2ea73b22225cba39c271",
      "tree": "6a1499e15ae6d22cc798cc86db0d644cddb0c3ce",
      "parents": [
        "761198a05df5a7c48d04de7a7759e023f4147094"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Dec 21 16:17:09 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Jan 08 11:07:58 2019 +0900"
      },
      "message": "Fix linter errors in IpServer and its dependencies\n\nTest: atest FrameworksNetTests NetworkStackTests\nChange-Id: I534b391458433ac24dffe78f287e3c83a264acfd\n"
    },
    {
      "commit": "761198a05df5a7c48d04de7a7759e023f4147094",
      "tree": "632a075e4bae59600a12a4744415a9cfefcbbbfc",
      "parents": [
        "7ec9e6849e78b5c8a28e9523f2a77e607569c9a6"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Dec 10 16:35:30 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Jan 07 12:07:18 2019 +0900"
      },
      "message": "Add parceling for DhcpServingParams\n\nIntroduce a stable AIDL parcel class, DhcpServingParamsParcel, and\nmethods to convert to and from that class to DhcpServingParams.\nThis will be used to move DhcpServer to the NetworkStack app.\n\nTest: atest FrameworksNetTests\nBug: b/112869080\nChange-Id: I276b7affccb938059769c90a53f0f6beb26e6ede\n"
    },
    {
      "commit": "9d5e00321fee796996161a69a63fef9069460c02",
      "tree": "38e222ba83d29c9d21a562d248afb12e3d2dc548",
      "parents": [
        "ed30ec8dd14ea76aec4b0dc79091cabeb44dec09",
        "155da48519993e7de4ea8d15e69bfe262ac68ea0"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Dec 18 03:38:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 18 03:38:24 2018 +0000"
      },
      "message": "Merge \"Replace InterfaceParams with ifName in DhcpServer\""
    },
    {
      "commit": "155da48519993e7de4ea8d15e69bfe262ac68ea0",
      "tree": "c83868d33da4ce33178a3030a13015db17720d76",
      "parents": [
        "fad9571dc59e822d6d59ad163b55799de9d1bc34"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Dec 05 15:09:08 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Dec 17 15:15:16 2018 +0900"
      },
      "message": "Replace InterfaceParams with ifName in DhcpServer\n\nThe current code only uses InterfaceParams#name, and InterfaceParams is\ndefined in services/net which DhcpServer cannot depend on once moved to\na separate app.\n\nTest: atest FrameworksNetTests\nBug: b/112869080\nChange-Id: I94c7dce33200c111666a9dddde82ac2e66a6794f\n"
    },
    {
      "commit": "04ed6a35921303aa194358f6c8b84b3f556ccc92",
      "tree": "46eec2ff55ac38a3591cfba23feebaf0f814e2c9",
      "parents": [
        "785e5f1f962ec95cf59333c931280890f130b9c2"
      ],
      "author": {
        "name": "Aaron Huang",
        "email": "huangaaron@google.com",
        "time": "Thu Nov 15 20:30:46 2018 +0800"
      },
      "committer": {
        "name": "Aaron Huang",
        "email": "huangaaron@google.com",
        "time": "Mon Dec 10 14:18:14 2018 +0000"
      },
      "message": "apf: Drop ARP reply if SPA is 0.0.0.0\n\nSome network re-writing packet from broadcast MACs to unicast,\nresult in this kind of packets cannot be dropped by APF filter.\nThus, drop ARP reply if source IP is 0.0.0.0.\n\nNote: Linux kernel always ignores such replies in the function arp_process().\n\nBug: 118044271\nTest: runtest frameworks-net -c android.net.apf.ApfTest\nChange-Id: Id293bf231913d9b483ce7d8dd909e05fa927ccd7\n"
    },
    {
      "commit": "785e5f1f962ec95cf59333c931280890f130b9c2",
      "tree": "29ed09d4b10ed89927032b31319e8af0fb3bee65",
      "parents": [
        "67c6ab38ba1b6dbdae46a4425dd66bb9147374c0"
      ],
      "author": {
        "name": "Aaron Huang",
        "email": "huangaaron@google.com",
        "time": "Wed Oct 31 15:57:48 2018 +0800"
      },
      "committer": {
        "name": "Aaron Huang",
        "email": "huangaaron@google.com",
        "time": "Mon Dec 10 21:05:14 2018 +0800"
      },
      "message": "Add an APF unit test to drop all packets in the pcap file\n\nRead a pcap file and runs it through APF filter, then checks whether all\npackets in the file are dropped.\n\nTest: runtest frameworks-net -c android.net.apf.ApfTest\nChange-Id: I7fc59864608762cd2bc84131817183846b0bf5b5\n"
    },
    {
      "commit": "2a520365dad848ad0b9027b8b64943cf04d31d27",
      "tree": "d351af761561aa9d5fd63d66a60bc1811866f705",
      "parents": [
        "6622d0957d0ab01f9808901ccf5d9e2e440ea5e1",
        "30ff7a093e748fbd78e90df36885920c324217fa"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Oct 13 00:47:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Oct 13 00:47:45 2018 +0000"
      },
      "message": "Merge \"Remove unused imports of libcore.io.Libcore.\""
    },
    {
      "commit": "031dfa6f3353e7741a0f6cdf892a12940896b6e9",
      "tree": "08db61bce4b0d4abb5133bf5d53f381c19269c22",
      "parents": [
        "8a79748b0c310ec75b44a5a6e93601c53df706fc"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Oct 10 17:05:12 2018 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Oct 10 17:17:56 2018 +0100"
      },
      "message": "Remove unused import\n\nStructGroupReq is imported but not used.\nThe import can be removed.\n\nBug: 113148576\nTest: build only\nChange-Id: I6b2ec5eb3f6c6e298fcde8e47dfd0979f889ca1d\n"
    },
    {
      "commit": "30ff7a093e748fbd78e90df36885920c324217fa",
      "tree": "cb0ccba1268f5f8b8df114b485b21158025caea2",
      "parents": [
        "9b1db24f6e0ce1bea68a834d5ea21bea0f9bf374"
      ],
      "author": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Mon Oct 08 15:14:45 2018 +0100"
      },
      "committer": {
        "name": "Tobias Thierer",
        "email": "tobiast@google.com",
        "time": "Wed Oct 10 15:49:51 2018 +0000"
      },
      "message": "Remove unused imports of libcore.io.Libcore.\n\nTest: Treehugger\nBug: 115503977\nBug: 117548625\nChange-Id: I122fa68ddc2bd531f627dcac00834b47249bd56e\n"
    },
    {
      "commit": "3b12359e4c658c0562297f7d934f340090059676",
      "tree": "f3e60447e37f679d19161ebe18576cd8e9f5d0b8",
      "parents": [
        "5f7129b9256ff6f686fe3ab34af742ad74c83e72",
        "f90a92bb7b806864ec65da3a6c6f1970ea8da710"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Oct 04 01:08:19 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 01:08:19 2018 +0000"
      },
      "message": "Merge \"Send hostname and MTU options in DHCP ACK/OFFER\""
    },
    {
      "commit": "f90a92bb7b806864ec65da3a6c6f1970ea8da710",
      "tree": "05d68c88e593b1eef0d354cc24cdaf0525c53768",
      "parents": [
        "c457d8c95ac06f5a37a6a766f06005827a454a9e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Sep 21 12:57:53 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Oct 01 11:01:39 2018 +0900"
      },
      "message": "Send hostname and MTU options in DHCP ACK/OFFER\n\nThe hostname option is only sent when requested in the requested\nparameters option. This matches current behavior.\n\nTest: with aosp/763982, regression tests now all pass\n      atest FrameworksNetTest\nBug: b/109584964\nChange-Id: I793173fa893750ddbe72be09f4c2d70e5b285837\n"
    },
    {
      "commit": "f5d65c521c8db202cbe46e358f7c6de420de2a10",
      "tree": "0bb4ee40750175609584bacece962100d3aa7d32",
      "parents": [
        "c457d8c95ac06f5a37a6a766f06005827a454a9e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Sep 27 11:33:24 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Sep 27 12:20:15 2018 +0900"
      },
      "message": "Don\u0027t throw a NPE in SharedLog#e\n\nSome DhcpServer error code paths could cause a NPE, when the logError\ncallback was called without an exception. Allowing SharedLog#e to be\ncalled with a null Throwable is less error-prone.\n\nBug: b/109584964\nTest: atest FrameworksNetTests\nChange-Id: Idbcdd330a9d1951b27aaf525aaf12e52e102872c\n"
    },
    {
      "commit": "f8529dc8915f1cc2b03ad851c9b1bbbb8e5089a8",
      "tree": "623de6b3e9dfad65ec1f357aa3579cf0d321e553",
      "parents": [
        "194170e7f7493c828235f325140dd860d31d077d",
        "0ac2c0945b00d7716319bc5aa86ce0b249f14cea"
      ],
      "author": {
        "name": "Jeffrey Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Fri Sep 21 21:04:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 21 21:04:20 2018 +0000"
      },
      "message": "Merge \"Add ConnectivityManager.getConnectionOwnerUid()\""
    },
    {
      "commit": "0ac2c0945b00d7716319bc5aa86ce0b249f14cea",
      "tree": "a9a28f0df49dc8748c727b6a0dae3cc01c68c969",
      "parents": [
        "741521940a1b0d0b05b20719a38e3970917dd5ef"
      ],
      "author": {
        "name": "Jeff Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Mon Jul 23 10:57:53 2018 -0700"
      },
      "committer": {
        "name": "Jeffrey Vander Stoep",
        "email": "jeffv@google.com",
        "time": "Fri Sep 21 06:16:09 2018 +0000"
      },
      "message": "Add ConnectivityManager.getConnectionOwnerUid()\n\nAllow VPN apps to lookup the UID owner of a network connection.\n\nRequires specifying the:\n - IP address and port for both the source and destination of a TCP\n   connection.\n - IP address and port for either source and destination or just\n   source for a UDP connection.\nOnly TCP and UDP protocols are supported. Only connections for UIDs\nthat apply to the calling VPN app will be resolved. This is intended\nto replace direct app access to /proc/net/{tcp,tcp6,udp,udp6}.\n\nThe implementation uses netlink inet_diag sockets[1] to perform\nthe lookup on TCP sockets as well as UDP sockets when supported\n(kernel has CONFIG_INET_UDP_DIAG\u003dy).\n\n[1] http://man7.org/linux/man-pages/man7/sock_diag.7.html\n\nBug: 9496886\nBug: 109758967\nTest: atest HostsideVpnTests\nTest: atest InetDiagSocketTest on Taimen with CONFIG_INET_UDP_DIAG\n    and on Sailfish without CONFIG_INET_UDP_DIAG.\nChange-Id: I2bbc7072dd091e2e653dadf6dc05024c04180f34\n"
    },
    {
      "commit": "8e492f8de426685e7b57f9d92252fa2a436cb488",
      "tree": "acaa52c54289927035482db23ff8efbdbef9b108",
      "parents": [
        "741521940a1b0d0b05b20719a38e3970917dd5ef"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Sep 14 16:25:54 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Fri Sep 14 18:46:25 2018 +0900"
      },
      "message": "Use IPv6 hop limit from upstream interface.\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\n    - manually setting /proc/sys/net/ipv6/\u003cupiface\u003e/conf/hop_limit\n      to various value yields RAs with expected hop limit settings\n      in downstream RAs\nBug: 32163131\nChange-Id: I248154ca9d836318bf21a2971d0884040525d9fc\n"
    },
    {
      "commit": "7a4ccc69d0dbc38383c8fedd908675cc62e84bec",
      "tree": "49014ea33af87d06d87f19ea99bc3117187fc724",
      "parents": [
        "e7f1dc66617ed694f6882a18353016bb33e163d3"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Aug 27 17:26:47 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Sep 13 15:46:01 2018 +0900"
      },
      "message": "Initial rename to IpServer\n\nRename TetherInterfaceStateMachine to IpServer. IControlsTethering\nis folded into IpServer.Callback and some of the dependencies in\nTetheringDependencies are moved into IpServer.Dependencies.\n\nSeveral things still need fixing, including:\n    - convert message passing into method calls\n    - the calls that enable forwarding should be moved up out of\n      IpServer into the Tethering layer above it\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\nChange-Id: I015f800ed23c8aa5c8c81a74d7b508abfcaab659\n"
    },
    {
      "commit": "95999bda8d3d6928843f90023edcaefc140f0c81",
      "tree": "1e5caef05d982fca22c73470535084a6d48e0ff2",
      "parents": [
        "2a10846e04a0dbf20a95764abdcdbf193d2d204a"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Sep 12 14:37:11 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Sep 12 14:58:58 2018 +0900"
      },
      "message": "Remove the last of the ResolvUtil uses\n\nThis is the completion of cleanup work started in aosp/674269.\nConsequently, also remove ResolvUtil.\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\n    - presubmit\nBug: 64133961\nBug: 72345192\nBug: 73872000\nBug: 78548486\nChange-Id: I980f8a9b67f3f06f2d97a60f8e58e92c36316d40\n"
    },
    {
      "commit": "56fbfc0460c79c4401ca3a47ed40638f96fbdef6",
      "tree": "6425b1e9a2cc5862fb25200750d71c5b46badbb8",
      "parents": [
        "241aa86ed65f8368d18f6d1d570714ce514d9f94"
      ],
      "author": {
        "name": "Jacob Abrams",
        "email": "satur9nine@gmail.com",
        "time": "Mon Sep 10 17:00:46 2018 -0700"
      },
      "committer": {
        "name": "Jacob Abrams",
        "email": "satur9nine@gmail.com",
        "time": "Wed Sep 12 00:23:26 2018 +0000"
      },
      "message": "Fix ConcurrentModificationException crash due to race in IpClient\n\nBug: https://issuetracker.google.com/issues/114838819\n\nTest: manual\nChange-Id: Ifd1522ccaca10c0416fc2d00641c4effee37fc6c\n"
    },
    {
      "commit": "666bb5cf28adbd207830fcddfa67d06d14a4001f",
      "tree": "cf3c439dbfe10f15cab0ab150898249d3c4d99e0",
      "parents": [
        "beeb35f0de469e6178050b058499075762ab5e5f",
        "abb70339ea5b5e5ad4d0c0a8b8cfd0c92cf93329"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Sep 11 05:55:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 11 05:55:37 2018 +0000"
      },
      "message": "Merge \"Try to set the hop limit to something suitable for 64share\""
    },
    {
      "commit": "5b43cea3c8185425fa43cb817ab26fecfd13708c",
      "tree": "a98c7cef8aea365230ca7ac8b6b3f54c17bc7288",
      "parents": [
        "460a52947192febdf99f37cb761710a46c63fd46"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Sep 06 11:10:03 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Thu Sep 06 11:41:39 2018 +0900"
      },
      "message": "Tighten up neighbor timers if IpReachabilityMonitor is in use\n\nCurrently the kernel sends 3 probes, 1000ms apart when a neighbor is\nin NUD_PROBE state (either naturally or artificially moved to that\nstate when, for example, confirming network configuration following\nan AP association/roam).\n\nWith this change the device sends 5 probes at 750ms apart.  This\ngives the network infrastructure a chance to respond to any of\n5 probes instead of any of only 3, at a cost of increasing the total\nprobe time from 3s to 3.75s.\n\nFuture changes may read these values from settings (or from somewhere\nelse) so that experiments may be conducted or values adjusted based on\nother information.\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\n    - examinaton of /proc settings on wifi shows updated values\n    - connected to a test network, disconnected the backhaul, ran\n      \"adb shell dumpsys wifi ipclient confirm\" while watching\n      \"adb shell tcpdump -n -i wlan0 -l -vv arp\", and observed\n      5 ARP who-has (\"solicits\") ~750ms apart.\nBug: 62476366\nBug: 62845299\nChange-Id: Ib805531b08624805bb63703a5b338b9ff48171d4\n"
    },
    {
      "commit": "abb70339ea5b5e5ad4d0c0a8b8cfd0c92cf93329",
      "tree": "5bcf1242b6a27afe0231bad29628448297b83328",
      "parents": [
        "90d5e7b190e120efce0354e6170969f88d97a6b7"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Aug 28 14:00:37 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Sep 05 17:08:07 2018 +0900"
      },
      "message": "Try to set the hop limit to something suitable for 64share\n\nIntroduce hopLimit into RaParams so in future the value can be passed\nin from the control plane up in Tethering.\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\nBug: 32163131\nChange-Id: I8d2f056dcd55d76e89199db1196754fb690250e8\n"
    },
    {
      "commit": "e1a1dcc994763cafadcec599a1cc730299392830",
      "tree": "b351f0e3d2f53a4d1de3fa04654ec1436a4646a2",
      "parents": [
        "8975ab632259e8e7620f72e8abee2fed16c704bf"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Aug 31 12:14:24 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Aug 31 13:23:39 2018 +0900"
      },
      "message": "Ignore DHCP discover and request w/ invalid giaddr\n\nThis matches previous behavior, and there could be situations where\nanother server on the network would be configured to reply to such\nrequests, so not replying is better than sending NAKs as done now.\n\nAlso refactoring requests in DhcpLeaseRepositoryTest and replacing some\nINETADDR_UNSPEC usages for giaddr with INET4_ANY (giaddr is a BOOTP\nfield and can\u0027t be unspecified, only empty).\n\nTest: Following DhcpServerTest.py regression tests pass:\n      test_request_selecting_giaddr_outside_subnet\n      test_discover_requestaddress_giaddr_outside_subnet\n      test_discover_knownaddress_giaddr_outside_subnet\n      test_discover_giaddr_outside_subnet\n      Also: atest FrameworksNetTests passes\nChange-Id: I4decffccfc64d5e0e29c9ce1cf1446644fcf8190\n"
    },
    {
      "commit": "8975ab632259e8e7620f72e8abee2fed16c704bf",
      "tree": "e9ee6e4ae4f2eccef8133631b7c1c072110782ba",
      "parents": [
        "9865cc1bd252fa325b8cb7869541c00f4577d3ab"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 18:17:07 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 18:23:23 2018 +0900"
      },
      "message": "Send ciaddr in DHCP server ACK if set by client\n\nRFC2131#4.3.1 specifies that ciaddr should be set to the \"\u0027ciaddr\u0027 from\nDHCPREQUEST or 0\". Previous behavior sets ciaddr if provided by the\nclient in DHCPREQUEST, so keeping this behavior.\n\nBug: b/109584964\nTest: DhcpServerTest.py debian/macos/win10 renewing test pass\nChange-Id: I283e88b1f66f39d24589c5af4518cf9a2e77b95d\n"
    },
    {
      "commit": "9865cc1bd252fa325b8cb7869541c00f4577d3ab",
      "tree": "57c026802be6e78d51866195f9b75141ab29d185",
      "parents": [
        "6557a2464ee59ebb0fce23040006f50ca9cc5a85"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 16:49:52 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 17:30:56 2018 +0900"
      },
      "message": "Minor logging fixes for new DHCP server\n\n - Do not use Inet4Address#toString(), but Inet4Address#getHostAddress()\n - Dump enableLegacyDhcpServer in TetheringConfiguration\n\nBug: b/109584964\nTest: manual: flashed, observed logs\nChange-Id: I1f4d008b8bb1818e05a68ac0b5da4ce856cc1588\n"
    },
    {
      "commit": "6557a2464ee59ebb0fce23040006f50ca9cc5a85",
      "tree": "9e7950bfba9d78b4aa2b26cd5779156014771abd",
      "parents": [
        "e59d031fb9f58c10011b046348d3799db3bf8ece"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Fri Jul 13 17:42:39 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 16:13:20 2018 +0900"
      },
      "message": "Fix DHCP options sent by DHCP server\n\nAdd Android metered option, rebinding time option (T2), and match\ncurrent order of options.  Current DHCP server uses subnet_mask,\nbroadcast_address, router, name_server in this order.\n\nTest: DhcpServerTest.py:test_discover_paramrequestlist passes\n      atest FrameworksNetTests passes\n\nBug: b/109584964\nChange-Id: I58f904d5fac306f704c16234fd69c2440fe0803d\n"
    },
    {
      "commit": "e59d031fb9f58c10011b046348d3799db3bf8ece",
      "tree": "43b0a79129aad38524b2896f762f83e64e3294be",
      "parents": [
        "b825510b80a6d8db12590f2f0995bddf97970946"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Aug 29 16:14:21 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 30 15:54:02 2018 +0900"
      },
      "message": "Fix BOOTP fields for server-generated DHCP packets\n\nSet siaddr to the server address instead of zero in DHCPOFFER\nSet siaddr to zero instead of the server address in DHCPNAK\nSet giaddr to the relay address instead of the server address in\nDHCPNAK\nSet giaddr to the relay address instead of zero on DHCPACK and\nDHCPOFFER\nSet server identifier option in DHCPNAK\n\nCurrent code is not compliant with RFC2131 and does not match dnsmasq\nbehavior. It was not an issue until now since the packets were only used\nby the DHCP client, which does not send DHCPOFFER or DHCPNAK.\n\nBug: b/109584964\nTest: following DhcpServerTest.py regression tests pass:\n      test_discover_bootpfields\n      test_request_selecting_inuse\n      test_request_rebinding_relayed\n      test_discover_relayed_broadcastbit\n      test_request_rebinding_wrongaddr_relayed\n      Also: atest FrameworksNetTests\n\nChange-Id: Ie0bf780498e38945444bff66ca499cff5983a97f\n"
    },
    {
      "commit": "397f8110b570ac08c8edc2702e62bcb101cb624f",
      "tree": "9310ba2d670e9789092b73edeb202f8ef3ded306",
      "parents": [
        "ef7432f245817f32e7a75e071af94dab11e8ba29"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Aug 29 15:53:03 2018 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Wed Aug 29 16:55:47 2018 +0900"
      },
      "message": "Also copy-construct multinetwork policy preference\n\nTest: as follows\n    - built, flashed, booted\n    - runtest frameworks-net passes\n    - manual bluetooth tethering testing doesn\u0027t seem to trigger any\n      actual tethering, since bt-pan interface keeps going down on\n      test device (IpClient never really starts up fully)\nBug: 62476366\nBug: 113136023\nChange-Id: I3265f60f8ae125eba4545cb652c95a2f70049058\n"
    },
    {
      "commit": "ef7432f245817f32e7a75e071af94dab11e8ba29",
      "tree": "12a3c83c7ab5b00c8f1af93057e99ea86fe37aab",
      "parents": [
        "64dda3cf1829fc7a07a49ae114d2e4a10e29337c",
        "b0762eb3db82486cec9bfe31cb45bf7e20716430"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Aug 29 06:25:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 29 06:25:06 2018 +0000"
      },
      "message": "Merge \"Ignore DHCP packet sent from non-68 client port\""
    },
    {
      "commit": "e3a0f42e8e8678f6d90ddf104d485858fbb2e35b",
      "tree": "d499b3e00a551a40ec253ac09e191fc7080d658c",
      "parents": [
        "0e1621296fdb09f3ffaaf69e77728663b0943953",
        "a13007ad0f60e4b81440304677f41826d3f1e3e7"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Aug 29 03:19:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 29 03:19:27 2018 +0000"
      },
      "message": "Merge \"Add DhcpServer\""
    },
    {
      "commit": "80f3ddca8aa08e928652ee62276e0fd62955f65d",
      "tree": "7201dabe9d66c8e5b85066badf6ffb3b2fe7a4a8",
      "parents": [
        "afa1c743bef81933d82569144d7220d209067b35",
        "a75872039401df8bdd14b060da27c0eb151e591a"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Aug 28 08:08:07 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 28 08:08:07 2018 +0000"
      },
      "message": "Merge \"Add varargs methods to build DhcpServingParams\""
    },
    {
      "commit": "b0762eb3db82486cec9bfe31cb45bf7e20716430",
      "tree": "1f9740ba75ab48c55a83c96c78488e5fd9d98bdc",
      "parents": [
        "a13007ad0f60e4b81440304677f41826d3f1e3e7"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Aug 28 11:06:54 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Aug 28 13:57:40 2018 +0900"
      },
      "message": "Ignore DHCP packet sent from non-68 client port\n\nThis differs from previous behavior where dnsmasq would reply to port 68\nif the client had no configured address (ciaddr empty in request), or\nsend replies to the client port if the request ciaddr matched the\nassigned lease.\nNot all DHCP servers preserve this behavior, and there is no good known\nuse-case for it. Not replying to such packets is less error-prone and\ncloser to the standard.\n\nBug: b/109584964\nTest: Added test in DhcpServerTest.py passes\nChange-Id: I88d467336cc4f4e4c9498c3787ec22fdef5e1cdd\n"
    },
    {
      "commit": "a13007ad0f60e4b81440304677f41826d3f1e3e7",
      "tree": "86d779a09ac48c54a1e375b5dfa964fcd9f81c17",
      "parents": [
        "a75872039401df8bdd14b060da27c0eb151e591a"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Aug 13 15:54:27 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Tue Aug 28 12:50:47 2018 +0900"
      },
      "message": "Add DhcpServer\n\nThis first version can serve discover/request/release, although there\nare some small behavior changes with current implementation which will\nbe addressed later.\n\nAlso removes final modifiers on start() and stop() in FdEventsReader, to\nallow mocking the methods in tests with the current mockito lib.\n\nTest: Added tests pass, manual: flashed a device using the server\nChange-Id: I025366ff7d51c4ba31152af50f3dd2b5e280a54d\n"
    },
    {
      "commit": "a75872039401df8bdd14b060da27c0eb151e591a",
      "tree": "01c72475ff222bb5e595d109a05b153636d1a071",
      "parents": [
        "e01b4ce6c7489bfbbb8999ed525c2444a18997ef"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 18:01:46 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Aug 27 10:57:14 2018 +0900"
      },
      "message": "Add varargs methods to build DhcpServingParams\n\nIn common use-cases, only one gateway or DNS server may be set, so the\nadded methods make it easier for clients to build the parameters.\n\nBug: b/109584964\nTest: runtest --no-hidden-api-checks frameworks-net\nChange-Id: Ib54bc60a54ad4ef0605baea62d87b9f14caf8aa7\n"
    },
    {
      "commit": "18c144cf621b5137d96be0bd863530c9a284c5a6",
      "tree": "ad931e14996ea817c89578d1a76187d2a9baec60",
      "parents": [
        "7b7e05459f8fd191b5ace355ef70c74b8b223a0c",
        "509c0615fed52e5ce0fc27304a72848d3a75f94a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 24 09:18:38 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 24 09:18:38 2018 +0000"
      },
      "message": "Merge \"IpClient: fix in InitialConfiguration validation.\""
    },
    {
      "commit": "bd0cc31c12c7e209421abd42f61f200d0c3e6bef",
      "tree": "ee9e088f844d3c395bd1d415566f151f696b494a",
      "parents": [
        "a420b57a6b6682f48af56eb1dcdac2fa07924e7e"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Mon Aug 13 11:26:49 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 17:29:51 2018 +0900"
      },
      "message": "Add a SharedLog method to log errors w/ stacktrace\n\nTest: manual: ran code using this method and checked log.\nChange-Id: I2cea553ae0dd8a8f2f629718e92aa642c62eb120\n"
    },
    {
      "commit": "a420b57a6b6682f48af56eb1dcdac2fa07924e7e",
      "tree": "139732bce5c5080e015f119db9b97ac973d8c223",
      "parents": [
        "1885805aac5091ed7b734524292b7d7a75e347bb"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jul 04 15:09:42 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 17:29:48 2018 +0900"
      },
      "message": "Add DhcpServingParams\n\nThose parameters will be used to start DhcpServer or update its\nconfiguration.\n\nTest: runtest DhcpServingParamsTest.java\nBug: b/109584964\nChange-Id: Id8d3dcf62d66dcb02accffa8d8500e30f07af452\n"
    },
    {
      "commit": "1885805aac5091ed7b734524292b7d7a75e347bb",
      "tree": "0f3fb7787d77a0556abaf81fd6959f819fbfe433",
      "parents": [
        "12da4a5efc6379056370ae3cc0bf37233669bfdf"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jul 04 12:58:10 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 16:03:12 2018 +0900"
      },
      "message": "Add fields to DHCP packets for server use-case\n\nAlso add DhcpReleasePacket\n\nTest: runtest -x DhcpPacketTest.java, manual: still obtains IP\nBug: b/109584964\nChange-Id: I19e68e8857646555ea56995880979a8a722757d7\n"
    },
    {
      "commit": "c1413d0a278d64a05e5da9d269327408f795fed0",
      "tree": "657787490f292455ede3fd260c8483d83381d71b",
      "parents": [
        "eca5b4e7532e2c7ae114167df39327b5a83ab5a3"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jun 06 15:47:07 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 16:01:44 2018 +0900"
      },
      "message": "Add DHCP utils extracted from DhcpClient\n\nDhcpClient can then be migrated to at least DhcpSocketFactory, and\neventually DhcpPacketListener.\nThese classes will be used to implement the new DhcpServer.\n\nFdEventsReader is PacketReader with generic T instead of byte[], to\nallow reading both received payload and source IP from a UDP socket with\nOs.recvfrom().\n\nBug: 109584964\nTest: runtest --no-hidden-api-checks frameworks-net\nChange-Id: Idd7dc36938748af701b45f50bde76a2592c9bfdd\n"
    },
    {
      "commit": "eca5b4e7532e2c7ae114167df39327b5a83ab5a3",
      "tree": "513b161be494d291e9f8672ecc0c1993b1b56122",
      "parents": [
        "5831d309fad9e9c1f291159d748f13268a2a28d8"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Jun 27 17:20:36 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Thu Aug 23 15:55:39 2018 +0900"
      },
      "message": "Add DhcpLeaseRepository\n\nThis is a first component to build the new DHCP server.\n\nTest: added tests pass\nBug: b/109584964\nChange-Id: I5657d89c3010a23e9289ac827bf78381477d1355\n"
    },
    {
      "commit": "d2cb322e93007dc41fe2880008fe58fc80e315e6",
      "tree": "a3e1952c342def4029c5e19265026ec4bf872488",
      "parents": [
        "d3d564a802bf61b5e3916ed3dcfbd952773102be"
      ],
      "author": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Aug 08 12:01:03 2018 +0900"
      },
      "committer": {
        "name": "Remi NGUYEN VAN",
        "email": "reminv@google.com",
        "time": "Wed Aug 08 12:22:20 2018 +0900"
      },
      "message": "Add codewiz@, reminv@ to OWNERS for connectivity\n\nTest: m\nChange-Id: I11df4c93ac61b620fc576a2ff17192b7c9ecb984\n"
    },
    {
      "commit": "509c0615fed52e5ce0fc27304a72848d3a75f94a",
      "tree": "9c350fd1d177283ed77b6dbad27e87facff8dccf",
      "parents": [
        "bb352287c9f3631633274d2d70fc54b9b3eee851"
      ],
      "author": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jul 24 09:13:58 2018 +0900"
      },
      "committer": {
        "name": "Hugo Benichi",
        "email": "hugobenichi@google.com",
        "time": "Tue Jul 24 09:13:58 2018 +0900"
      },
      "message": "IpClient: fix in InitialConfiguration validation.\n\nThis patch correctly invalidates InitialConfiguration objects with more\nthan one IPv4 address specified.\n\nBug: 111639419\nTest: none\nChange-Id: Ifda174636544311bee456f17946779bac7d4a49e\n"
    },
    {
      "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"
    }
  ],
  "next": "37bef2a4e300e99cc42a5d4a8059a6df2d1ad532"
}
