Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81ab4871 authored by Mark Chien's avatar Mark Chien Committed by Gerrit Code Review
Browse files

Merge "Support static address configuration"

parents 66a82eec b69c39ad
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -127,9 +127,11 @@ package android.net {
  public static class TetheringManager.TetheringRequest.Builder {
    ctor public TetheringManager.TetheringRequest.Builder(int);
    method @NonNull public android.net.TetheringManager.TetheringRequest build();
    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setSilentProvisioning(boolean);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder useStaticIpv4Addresses(@NonNull android.net.LinkAddress);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
  }

}
+3 −1
Original line number Diff line number Diff line
@@ -4936,9 +4936,11 @@ package android.net {
  public static class TetheringManager.TetheringRequest.Builder {
    ctor public TetheringManager.TetheringRequest.Builder(int);
    method @NonNull public android.net.TetheringManager.TetheringRequest build();
    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setSilentProvisioning(boolean);
    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder useStaticIpv4Addresses(@NonNull android.net.LinkAddress);
    method @NonNull @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED) public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
  }
  public class TrafficStats {
+3 −1
Original line number Diff line number Diff line
@@ -1663,9 +1663,11 @@ package android.net {
  public static class TetheringManager.TetheringRequest.Builder {
    ctor public TetheringManager.TetheringRequest.Builder(int);
    method @NonNull public android.net.TetheringManager.TetheringRequest build();
    method @Nullable public android.net.LinkAddress getClientStaticIpv4Address();
    method @Nullable public android.net.LinkAddress getLocalIpv4Address();
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setSilentProvisioning(boolean);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder useStaticIpv4Addresses(@NonNull android.net.LinkAddress);
    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setStaticIpv4Addresses(@NonNull android.net.LinkAddress, @NonNull android.net.LinkAddress);
  }

  public class TrafficStats {
+33 −3
Original line number Diff line number Diff line
@@ -512,19 +512,36 @@ public class TetheringManager {
                mBuilderParcel = new TetheringRequestParcel();
                mBuilderParcel.tetheringType = type;
                mBuilderParcel.localIPv4Address = null;
                mBuilderParcel.staticClientAddress = null;
                mBuilderParcel.exemptFromEntitlementCheck = false;
                mBuilderParcel.showProvisioningUi = true;
            }

            /**
             * Configure tethering with static IPv4 assignment (with DHCP disabled).
             * Configure tethering with static IPv4 assignment.
             *
             * @param localIPv4Address The preferred local IPv4 address to use.
             * The clientAddress must be in the localIPv4Address prefix. A DHCP server will be
             * started, but will only be able to offer the client address. The two addresses must
             * be in the same prefix.
             *
             * @param localIPv4Address The preferred local IPv4 link address to use.
             * @param clientAddress The static client address.
             */
            @RequiresPermission(android.Manifest.permission.TETHER_PRIVILEGED)
            @NonNull
            public Builder useStaticIpv4Addresses(@NonNull final LinkAddress localIPv4Address) {
            public Builder setStaticIpv4Addresses(@NonNull final LinkAddress localIPv4Address,
                    @NonNull final LinkAddress clientAddress) {
                Objects.requireNonNull(localIPv4Address);
                Objects.requireNonNull(clientAddress);
                if (localIPv4Address.getPrefixLength() != clientAddress.getPrefixLength()
                        || !localIPv4Address.isIpv4() || !clientAddress.isIpv4()
                        || !new IpPrefix(localIPv4Address.toString()).equals(
                        new IpPrefix(clientAddress.toString()))) {
                    throw new IllegalArgumentException("Invalid server or client addresses");
                }

                mBuilderParcel.localIPv4Address = localIPv4Address;
                mBuilderParcel.staticClientAddress = clientAddress;
                return this;
            }

@@ -549,6 +566,18 @@ public class TetheringManager {
            public TetheringRequest build() {
                return new TetheringRequest(mBuilderParcel);
            }

            /** Get static server address. */
            @Nullable
            public LinkAddress getLocalIpv4Address() {
                return mBuilderParcel.localIPv4Address;
            }

            /** Get static client address. */
            @Nullable
            public LinkAddress getClientStaticIpv4Address() {
                return mBuilderParcel.staticClientAddress;
            }
        }

        /**
@@ -563,6 +592,7 @@ public class TetheringManager {
        public String toString() {
            return "TetheringRequest [ type= " + mRequestParcel.tetheringType
                    + ", localIPv4Address= " + mRequestParcel.localIPv4Address
                    + ", staticClientAddress= " + mRequestParcel.staticClientAddress
                    + ", exemptFromEntitlementCheck= "
                    + mRequestParcel.exemptFromEntitlementCheck + ", showProvisioningUi= "
                    + mRequestParcel.showProvisioningUi + " ]";
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.net.LinkAddress;
parcelable TetheringRequestParcel {
    int tetheringType;
    LinkAddress localIPv4Address;
    LinkAddress staticClientAddress;
    boolean exemptFromEntitlementCheck;
    boolean showProvisioningUi;
}
Loading