diff options
Diffstat (limited to 'common/netd/binder')
21 files changed, 0 insertions, 2695 deletions
diff --git a/common/netd/binder/android/net/INetd.aidl b/common/netd/binder/android/net/INetd.aidl deleted file mode 100644 index 27d9a035..00000000 --- a/common/netd/binder/android/net/INetd.aidl +++ /dev/null @@ -1,1438 +0,0 @@ -/** - * Copyright (c) 2016, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -import android.net.INetdUnsolicitedEventListener; -import android.net.InterfaceConfigurationParcel; -import android.net.IpSecMigrateInfoParcel; -import android.net.MarkMaskParcel; -import android.net.NativeNetworkConfig; -import android.net.RouteInfoParcel; -import android.net.TetherConfigParcel; -import android.net.TetherOffloadRuleParcel; -import android.net.TetherStatsParcel; -import android.net.UidRangeParcel; -import android.net.netd.aidl.NativeUidRangeConfig; - -/** {@hide} */ -interface INetd { - /** - * Returns true if the service is responding. - */ - boolean isAlive(); - - /** - * Replaces the contents of the specified UID-based firewall chain. - * - * The chain may be an allowlist chain or a denylist chain. A denylist chain contains DROP - * rules for the specified UIDs and a RETURN rule at the end. An allowlist chain contains RETURN - * rules for the system UID range (0 to {@code UID_APP} - 1), RETURN rules for for the specified - * UIDs, and a DROP rule at the end. The chain will be created if it does not exist. - * - * @param chainName The name of the chain to replace. - * @param isAllowlist Whether this is an allowlist or denylist chain. - * @param uids The list of UIDs to allow/deny. - * @return true if the chain was successfully replaced, false otherwise. - */ - boolean firewallReplaceUidChain(in @utf8InCpp String chainName, - boolean isAllowlist, - in int[] uids); - - /** - * Enables or disables data saver mode on costly network interfaces. - * - * - When disabled, all packets to/from apps in the penalty box chain are rejected on costly - * interfaces. Traffic to/from other apps or on other network interfaces is allowed. - * - When enabled, only apps that are in the happy box chain and not in the penalty box chain - * are allowed network connectivity on costly interfaces. All other packets on these - * interfaces are rejected. The happy box chain always contains all system UIDs; to disallow - * traffic from system UIDs, place them in the penalty box chain. - * - * By default, data saver mode is disabled. This command has no effect but might still return an - * error) if {@code enable} is the same as the current value. - * - * @param enable whether to enable or disable data saver mode. - * @return true if the if the operation was successful, false otherwise. - */ - boolean bandwidthEnableDataSaver(boolean enable); - - /** - * Creates a physical network (i.e., one containing physical interfaces. - * @deprecated use networkCreate() instead. - * - * @param netId the networkId to create. - * @param permission the permission necessary to use the network. Must be one of - * PERMISSION_NONE/PERMISSION_NETWORK/PERMISSION_SYSTEM. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkCreatePhysical(int netId, int permission); - - /** - * Creates a VPN network. - * @deprecated use networkCreate() instead. - * - * @param netId the network to create. - * @param secure whether unprivileged apps are allowed to bypass the VPN. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkCreateVpn(int netId, boolean secure); - - /** - * Destroys a network. Any interfaces added to the network are removed, and the network ceases - * to be the default network. - * - * @param netId the network to destroy. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkDestroy(int netId); - - /** - * Adds an interface to a network. The interface must not be assigned to any network, including - * the specified network. - * - * @param netId the network to add the interface to. - * @param interface the name of the interface to add. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkAddInterface(int netId, in @utf8InCpp String iface); - - /** - * Adds an interface to a network. The interface must be assigned to the specified network. - * - * @param netId the network to remove the interface from. - * @param interface the name of the interface to remove. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkRemoveInterface(int netId, in @utf8InCpp String iface); - - /** - * Adds the specified UID ranges to the specified network. The network can be physical or - * virtual. Traffic from the UID ranges will be routed to the network by default. - * - * @param netId the network ID of the network to add the ranges to. - * @param uidRanges a set of non-overlapping ranges of UIDs to add. These exact ranges - * must not overlap with existing ranges assigned to this network. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkAddUidRanges(int netId, in UidRangeParcel[] uidRanges); - - /** - * Remove the specified UID ranges from the specified network. The network can be physical or - * virtual. Traffic from the UID ranges will no longer be routed to the network by default. - * - * @param netId the network ID of the network to remove the ranges from. - * @param uidRanges a set of non-overlapping ranges of UIDs to remove. These exact ranges - * must already be assigned to this network. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkRemoveUidRanges(int netId, in UidRangeParcel[] uidRanges); - - /** - * Adds or removes one rule for each supplied UID range to prohibit all network activity outside - * of secure VPN. - * - * When a UID is covered by one of these rules, traffic sent through any socket that is not - * protected or explicitly overriden by the system will be rejected. The kernel will respond - * with an ICMP prohibit message. - * - * Initially, there are no such rules. Any rules that are added will only last until the next - * restart of netd or the device. - * - * @param add {@code true} if the specified UID ranges should be denied access to any network - * which is not secure VPN by adding rules, {@code false} to remove existing rules. - * @param uidRanges a set of non-overlapping, contiguous ranges of UIDs to which to apply or - * remove this restriction. - * <p> Added rules should not overlap with existing rules. Likewise, removed rules should - * each correspond to an existing rule. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkRejectNonSecureVpn(boolean add, in UidRangeParcel[] uidRanges); - - /** - * Administratively closes sockets belonging to the specified UIDs. - */ - void socketDestroy(in UidRangeParcel[] uidRanges, in int[] exemptUids); - - /** - * Instruct the tethering DNS server to reevaluated serving interfaces. - * This is needed to for the DNS server to observe changes in the set - * of potential listening IP addresses. (Listening on wildcard addresses - * can turn the device into an open resolver; b/7530468) - * - * TODO: Return something richer than just a boolean. - */ - boolean tetherApplyDnsInterfaces(); - - /** - * Return tethering statistics. - * - * @return an array of TetherStatsParcel, where each entry contains the upstream interface - * name and its tethering statistics since netd startup. - * There will only ever be one entry for a given interface. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - TetherStatsParcel[] tetherGetStats(); - - /** - * Add/Remove and IP address from an interface. - * - * @param ifName the interface name - * @param addrString the IP address to add/remove as a string literal - * @param prefixLength the prefix length associated with this IP address - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void interfaceAddAddress(in @utf8InCpp String ifName, in @utf8InCpp String addrString, - int prefixLength); - void interfaceDelAddress(in @utf8InCpp String ifName, in @utf8InCpp String addrString, - int prefixLength); - - /** - * Set and get /proc/sys/net interface configuration parameters. - * - * @param ipversion One of IPV4/IPV6 integers, indicating the desired IP version directory. - * @param which One of CONF/NEIGH integers, indicating the desired parameter category directory. - * @param ifname The interface name portion of the path; may also be "all" or "default". - * @param parameter The parameter name portion of the path. - * @param value The value string to be written into the assembled path. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - - const int IPV4 = 4; - const int IPV6 = 6; - const int CONF = 1; - const int NEIGH = 2; - @utf8InCpp String getProcSysNet(int ipversion, int which, in @utf8InCpp String ifname, - in @utf8InCpp String parameter); - void setProcSysNet(int ipversion, int which, in @utf8InCpp String ifname, - in @utf8InCpp String parameter, in @utf8InCpp String value); - - /** - * Sets owner of socket ParcelFileDescriptor to the new UID, checking to ensure that the caller's - * uid is that of the old owner's, and that this is a UDP-encap socket - * - * @param ParcelFileDescriptor socket Socket file descriptor - * @param int newUid UID of the new socket fd owner - */ - void ipSecSetEncapSocketOwner(in ParcelFileDescriptor socket, int newUid); - - /** - * Reserve an SPI from the kernel - * - * @param transformId a unique identifier for allocated resources - * @param sourceAddress InetAddress as string for the sending endpoint - * @param destinationAddress InetAddress as string for the receiving endpoint - * @param spi a requested 32-bit unique ID or 0 to request random allocation - * @return the SPI that was allocated or 0 if failed - */ - int ipSecAllocateSpi( - int transformId, - in @utf8InCpp String sourceAddress, - in @utf8InCpp String destinationAddress, - int spi); - - /** - * Update an IPsec SA (xfrm_state) describing how ip(v6) traffic will be encrypted - * or decrypted. - * - * @param transformId a unique identifier for allocated resources - * @param mode either Transport or Tunnel mode - * @param sourceAddress InetAddress as string for the sending endpoint - * @param destinationAddress InetAddress as string for the receiving endpoint - * @param underlyingNetId the netId of the network to which the SA is applied. Only accepted for - * tunnel mode SAs. - * @param spi a 32-bit unique ID allocated to the user - * @param markValue a 32-bit unique ID chosen by the user - * @param markMask a 32-bit mask chosen by the user - * @param authAlgo a string identifying the authentication algorithm to be used - * @param authKey a byte array containing the authentication key - * @param authTruncBits the truncation length of the MAC produced by the authentication algorithm - * @param cryptAlgo a string identifying the encryption algorithm to be used - * @param cryptKey a byte arrray containing the encryption key - * @param cryptTruncBits unused parameter - * @param aeadAlgo a string identifying the authenticated encryption algorithm to be used - * @param aeadKey a byte arrray containing the key to be used in authenticated encryption - * @param aeadIcvBits the truncation length of the ICV produced by the authentication algorithm - * (similar to authTruncBits in function) - * @param encapType encapsulation type used (if any) for the udp encap socket - * @param encapLocalPort the port number on the host to be used in encap packets - * @param encapRemotePort the port number of the remote to be used for encap packets - * @param interfaceId the identifier for the IPsec tunnel interface. - * Only accepted for tunnel mode SAs. - */ - void ipSecAddSecurityAssociation( - int transformId, - int mode, - in @utf8InCpp String sourceAddress, - in @utf8InCpp String destinationAddress, - int underlyingNetId, - int spi, - int markValue, - int markMask, - in @utf8InCpp String authAlgo, in byte[] authKey, in int authTruncBits, - in @utf8InCpp String cryptAlgo, in byte[] cryptKey, in int cryptTruncBits, - in @utf8InCpp String aeadAlgo, in byte[] aeadKey, in int aeadIcvBits, - int encapType, - int encapLocalPort, - int encapRemotePort, - int interfaceId); - - /** - * Delete a previously created security association identified by the provided parameters - * - * @param transformId a unique identifier for allocated resources - * @param sourceAddress InetAddress as string for the sending endpoint - * @param destinationAddress InetAddress as string for the receiving endpoint - * @param spi a requested 32-bit unique ID allocated to the user - * @param markValue a 32-bit unique ID chosen by the user - * @param markMask a 32-bit mask chosen by the user - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecDeleteSecurityAssociation( - int transformId, - in @utf8InCpp String sourceAddress, - in @utf8InCpp String destinationAddress, - int spi, - int markValue, - int markMask, - int interfaceId); - - /** - * Apply a previously created SA to a specified socket, starting IPsec on that socket - * - * @param socket a user-provided socket that will have IPsec applied - * @param transformId a unique identifier for allocated resources - * @param direction DIRECTION_IN or DIRECTION_OUT - * @param sourceAddress InetAddress as string for the sending endpoint - * @param destinationAddress InetAddress as string for the receiving endpoint - * @param spi a 32-bit unique ID allocated to the user (socket owner) - */ - void ipSecApplyTransportModeTransform( - in ParcelFileDescriptor socket, - int transformId, - int direction, - in @utf8InCpp String sourceAddress, - in @utf8InCpp String destinationAddress, - int spi); - - /** - * Remove an IPsec SA from a given socket. This will allow unencrypted traffic to flow - * on that socket if a transform had been previously applied. - * - * @param socket a user-provided socket from which to remove any IPsec configuration - */ - void ipSecRemoveTransportModeTransform( - in ParcelFileDescriptor socket); - - /** - * Adds an IPsec global policy. - * - * @param transformId a unique identifier for allocated resources - * @param selAddrFamily the address family identifier for the selector - * @param direction DIRECTION_IN or DIRECTION_OUT - * @param tmplSrcAddress InetAddress as string for the sending endpoint - * @param tmplDstAddress InetAddress as string for the receiving endpoint - * @param spi a 32-bit unique ID allocated to the user - * @param markValue a 32-bit unique ID chosen by the user - * @param markMask a 32-bit mask chosen by the user - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecAddSecurityPolicy( - int transformId, - int selAddrFamily, - int direction, - in @utf8InCpp String tmplSrcAddress, - in @utf8InCpp String tmplDstAddress, - int spi, - int markValue, - int markMask, - int interfaceId); - - /** - * Updates an IPsec global policy. - * - * @param transformId a unique identifier for allocated resources - * @param selAddrFamily the address family identifier for the selector - * @param direction DIRECTION_IN or DIRECTION_OUT - * @param tmplSrcAddress InetAddress as string for the sending endpoint - * @param tmplDstAddress InetAddress as string for the receiving endpoint - * @param spi a 32-bit unique ID allocated to the user - * @param markValue a 32-bit unique ID chosen by the user - * @param markMask a 32-bit mask chosen by the user - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecUpdateSecurityPolicy( - int transformId, - int selAddrFamily, - int direction, - in @utf8InCpp String tmplSrcAddress, - in @utf8InCpp String tmplDstAddress, - int spi, - int markValue, - int markMask, - int interfaceId); - - /** - * Deletes an IPsec global policy. - * - * Deletion of global policies does not do any matching based on the templates, thus - * template source/destination addresses are not needed (as opposed to add/update). - * - * @param transformId a unique identifier for allocated resources - * @param selAddrFamily the address family identifier for the selector - * @param direction DIRECTION_IN or DIRECTION_OUT - * @param markValue a 32-bit unique ID chosen by the user - * @param markMask a 32-bit mask chosen by the user - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecDeleteSecurityPolicy( - int transformId, - int selAddrFamily, - int direction, - int markValue, - int markMask, - int interfaceId); - - // This could not be declared as @uft8InCpp; thus, when used in native code it must be - // converted from a UTF-16 string to an ASCII string. - const String IPSEC_INTERFACE_PREFIX = "ipsec"; - - /** - * Add a IPsec Tunnel Interface. - * - * @param devName a unique identifier that represents the name of the device - * @param localAddress InetAddress as string for the local endpoint - * @param remoteAddress InetAddress as string for the remote endpoint - * @param iKey, to match Policies and SAs for input packets. - * @param oKey, to match Policies and SAs for output packets. - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecAddTunnelInterface( - in @utf8InCpp String deviceName, - in @utf8InCpp String localAddress, - in @utf8InCpp String remoteAddress, - int iKey, - int oKey, - int interfaceId); - - /** - * Update a IPsec Tunnel Interface. - * - * @param devName a unique identifier that represents the name of the device - * @param localAddress InetAddress as string for the local endpoint - * @param remoteAddress InetAddress as string for the remote endpoint - * @param iKey, to match Policies and SAs for input packets. - * @param oKey, to match Policies and SAs for output packets. - * @param interfaceId the identifier for the IPsec tunnel interface. - */ - void ipSecUpdateTunnelInterface( - in @utf8InCpp String deviceName, - in @utf8InCpp String localAddress, - in @utf8InCpp String remoteAddress, - int iKey, - int oKey, - int interfaceId); - - /** - * Removes a IPsec Tunnel Interface. - * - * @param devName a unique identifier that represents the name of the device - */ - void ipSecRemoveTunnelInterface(in @utf8InCpp String deviceName); - - /** - * Request notification of wakeup packets arriving on an interface. Notifications will be - * delivered to INetdEventListener.onWakeupEvent(). - * - * @param ifName the interface - * @param prefix arbitrary string used to identify wakeup sources in onWakeupEvent - */ - void wakeupAddInterface(in @utf8InCpp String ifName, in @utf8InCpp String prefix, int mark, int mask); - - /** - * Stop notification of wakeup packets arriving on an interface. - * - * @param ifName the interface - * @param prefix arbitrary string used to identify wakeup sources in onWakeupEvent - */ - void wakeupDelInterface(in @utf8InCpp String ifName, in @utf8InCpp String prefix, int mark, int mask); - - const int IPV6_ADDR_GEN_MODE_EUI64 = 0; - const int IPV6_ADDR_GEN_MODE_NONE = 1; - const int IPV6_ADDR_GEN_MODE_STABLE_PRIVACY = 2; - const int IPV6_ADDR_GEN_MODE_RANDOM = 3; - - const int IPV6_ADDR_GEN_MODE_DEFAULT = 0; - /** - * Set IPv6 address generation mode. IPv6 should be disabled before changing mode. - * - * @param mode SLAAC address generation mechanism to use - */ - void setIPv6AddrGenMode(in @utf8InCpp String ifName, int mode); - - /** - * Add idletimer for specific interface - * - * @param ifName Name of target interface - * @param timeout The time in seconds that will trigger idletimer - * @param classLabel The unique identifier for this idletimer - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void idletimerAddInterface( - in @utf8InCpp String ifName, - int timeout, - in @utf8InCpp String classLabel); - - /** - * Remove idletimer for specific interface - * - * @param ifName Name of target interface - * @param timeout The time in seconds that will trigger idletimer - * @param classLabel The unique identifier for this idletimer - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void idletimerRemoveInterface( - in @utf8InCpp String ifName, - int timeout, - in @utf8InCpp String classLabel); - - const int PENALTY_POLICY_ACCEPT = 1; - const int PENALTY_POLICY_LOG = 2; - const int PENALTY_POLICY_REJECT = 3; - - /** - * Offers to detect sockets sending data not wrapped inside a layer of SSL/TLS encryption. - * - * @param uid Uid of the app - * @param policyPenalty The penalty policy of the app - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void strictUidCleartextPenalty(int uid, int policyPenalty); - - /** - * Start clatd - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The clatd - * control plane moved to the mainline module starting in T. See ClatCoordinator. - * @param ifName interface name to start clatd - * @param nat64Prefix the NAT64 prefix, e.g., "2001:db8:64::/96". - * @return a string, the IPv6 address that will be used for 464xlat. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - @utf8InCpp String clatdStart(in @utf8InCpp String ifName, in @utf8InCpp String nat64Prefix); - - /** - * Stop clatd - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The clatd - * control plane moved to the mainline module starting in T. See ClatCoordinator. - * @param ifName interface name to stop clatd - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void clatdStop(in @utf8InCpp String ifName); - - /** - * Packet mark that identifies non-offloaded ingress clat packets. - */ - const int CLAT_MARK = 0xdeadc1a7; - - /** - * Get status of IP forwarding - * - * @return true if IP forwarding is enabled, false otherwise. - */ - boolean ipfwdEnabled(); - - /** - * Get requester list of IP forwarding - * - * @return An array of strings containing requester list of IP forwarding - */ - @utf8InCpp String[] ipfwdGetRequesterList(); - - /** - * Enable IP forwarding for specific requester - * - * @param requester requester name to enable IP forwarding. It is a unique name which will be - * stored in Netd to make sure if any requester needs IP forwarding. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void ipfwdEnableForwarding(in @utf8InCpp String requester); - - /** - * Disable IP forwarding for specific requester - * - * @param requester requester name to disable IP forwarding. This name should match the - * names which are set by ipfwdEnableForwarding. - * IP forwarding would be disabled if it is the last requester. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void ipfwdDisableForwarding(in @utf8InCpp String requester); - - /** - * Add forwarding ip rule - * - * @param fromIface interface name to add forwarding ip rule - * @param toIface interface name to add forwarding ip rule - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void ipfwdAddInterfaceForward(in @utf8InCpp String fromIface, in @utf8InCpp String toIface); - - /** - * Remove forwarding ip rule - * - * @param fromIface interface name to remove forwarding ip rule - * @param toIface interface name to remove forwarding ip rule - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void ipfwdRemoveInterfaceForward(in @utf8InCpp String fromIface, in @utf8InCpp String toIface); - - /** - * Set quota for interface - * - * @param ifName Name of target interface - * @param bytes Quota value in bytes - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthSetInterfaceQuota(in @utf8InCpp String ifName, long bytes); - - /** - * Remove quota for interface - * - * @param ifName Name of target interface - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthRemoveInterfaceQuota(in @utf8InCpp String ifName); - - /** - * Set alert for interface - * - * @param ifName Name of target interface - * @param bytes Alert value in bytes - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthSetInterfaceAlert(in @utf8InCpp String ifName, long bytes); - - /** - * Remove alert for interface - * - * @param ifName Name of target interface - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthRemoveInterfaceAlert(in @utf8InCpp String ifName); - - /** - * Set global alert - * - * @param bytes Alert value in bytes - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthSetGlobalAlert(long bytes); - - /** - * Add naughty app bandwidth rule for specific app - * - * @param uid uid of target app - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthAddNaughtyApp(int uid); - - /** - * Remove naughty app bandwidth rule for specific app - * - * @param uid uid of target app - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthRemoveNaughtyApp(int uid); - - /** - * Add nice app bandwidth rule for specific app - * - * @param uid uid of target app - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthAddNiceApp(int uid); - - /** - * Remove nice app bandwidth rule for specific app - * - * @param uid uid of target app - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void bandwidthRemoveNiceApp(int uid); - - /** - * Start tethering - * - * @param dhcpRanges dhcp ranges to set. - * dhcpRanges might contain many addresss {addr1, addr2, aadr3, addr4...} - * Netd splits them into ranges: addr1-addr2, addr3-addr4, etc. - * An odd number of addrs will fail. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherStart(in @utf8InCpp String[] dhcpRanges); - - /** - * Stop tethering - * - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherStop(); - - /** - * Get status of tethering - * - * @return true if tethering is enabled, false otherwise. - */ - boolean tetherIsEnabled(); - - /** - * Setup interface for tethering - * - * @param ifName interface name to add - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherInterfaceAdd(in @utf8InCpp String ifName); - - /** - * Reset interface for tethering - * - * @param ifName interface name to remove - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherInterfaceRemove(in @utf8InCpp String ifName); - - /** - * Get the interface list which is stored in netd - * The list contains the interfaces managed by tetherInterfaceAdd/tetherInterfaceRemove - * - * @return An array of strings containing interface list result - */ - @utf8InCpp String[] tetherInterfaceList(); - - /** - * Set DNS forwarder server - * - * @param netId the upstream network to forward DNS queries to - * @param dnsAddrs DNS server address to set - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherDnsSet(int netId, in @utf8InCpp String[] dnsAddrs); - - /** - * Return the DNS list set by tetherDnsSet - * - * @return An array of strings containing the list of DNS servers - */ - @utf8InCpp String[] tetherDnsList(); - - const int LOCAL_NET_ID = 99; - - /** - * Constant net ID for the "dummy" network. - * - * The dummy network is used to blackhole or reject traffic. Any attempt to use it will - * either drop the packets or fail with ENETUNREACH. - */ - const int DUMMY_NET_ID = 51; - - /** - * Constant net ID for the "unreachable" network. - * - * The unreachable network is used to reject traffic. Any attempt to use it will fail - * with ENETUNREACH. - */ - const int UNREACHABLE_NET_ID = 52; - - // Route does not specify a next hop - const String NEXTHOP_NONE = ""; - // Route next hop is unreachable - const String NEXTHOP_UNREACHABLE = "unreachable"; - // Route next hop is throw - const String NEXTHOP_THROW = "throw"; - - /** - * Add a route for specific network - * - * @param netId the network to add the route to - * @param ifName the name of interface of the route. - * This interface should be assigned to the netID. - * @param destination the destination of the route - * @param nextHop The route's next hop address, - * or it could be either NEXTHOP_NONE, NEXTHOP_UNREACHABLE, NEXTHOP_THROW. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkAddRoute( - int netId, - in @utf8InCpp String ifName, - in @utf8InCpp String destination, - in @utf8InCpp String nextHop); - - /** - * Remove a route for specific network - * - * @param netId the network to remove the route from - * @param ifName the name of interface of the route. - * This interface should be assigned to the netID. - * @param destination the destination of the route - * @param nextHop The route's next hop address, - * or it could be either NEXTHOP_NONE, NEXTHOP_UNREACHABLE, NEXTHOP_THROW. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkRemoveRoute( - int netId, - in @utf8InCpp String ifName, - in @utf8InCpp String destination, - in @utf8InCpp String nextHop); - - /** - * Add a route to legacy routing table for specific network - * - * @param netId the network to add the route to - * @param ifName the name of interface of the route. - * This interface should be assigned to the netID. - * @param destination the destination of the route - * @param nextHop The route's next hop address, - * or it could be either NEXTHOP_NONE, NEXTHOP_UNREACHABLE, NEXTHOP_THROW. - * @param uid uid of the user - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkAddLegacyRoute( - int netId, - in @utf8InCpp String ifName, - in @utf8InCpp String destination, - in @utf8InCpp String nextHop, - int uid); - - /** - * Remove a route from legacy routing table for specific network - * - * @param netId the network to remove the route from - * @param ifName the name of interface of the route. - * This interface should be assigned to the netID. - * @param destination the destination of the route - * @param nextHop The route's next hop address, - * or it could be either NEXTHOP_NONE, NEXTHOP_UNREACHABLE, NEXTHOP_THROW. - * @param uid uid of the user - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkRemoveLegacyRoute( - int netId, - in @utf8InCpp String ifName, - in @utf8InCpp String destination, - in @utf8InCpp String nextHop, - int uid); - - /** - * Get default network - * - * @return netId of default network - */ - int networkGetDefault(); - - /** - * Set network as default network - * - * @param netId the network to set as the default - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkSetDefault(int netId); - - /** - * Clear default network - * - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkClearDefault(); - - /** - * PERMISSION_NONE is used for regular networks and apps. TODO: use PERMISSION_INTERNET - * for this instead, and use PERMISSION_NONE to indicate no network permissions at all. - */ - const int PERMISSION_NONE = 0; - - /** - * PERMISSION_NETWORK represents the CHANGE_NETWORK_STATE permission. - */ - const int PERMISSION_NETWORK = 1; - - /** - * PERMISSION_SYSTEM represents the ability to use restricted networks. This is mostly - * equivalent to the CONNECTIVITY_USE_RESTRICTED_NETWORKS permission. - */ - const int PERMISSION_SYSTEM = 2; - - /** - * NO_PERMISSIONS indicates that this app is installed and doesn't have either - * PERMISSION_INTERNET or PERMISSION_UPDATE_DEVICE_STATS. - * TODO: use PERMISSION_NONE to represent this case - */ - const int NO_PERMISSIONS = 0; - - /** - * PERMISSION_INTERNET indicates that the app can create AF_INET and AF_INET6 sockets - */ - const int PERMISSION_INTERNET = 4; - - /** - * PERMISSION_UPDATE_DEVICE_STATS is used for system UIDs and privileged apps - * that have the UPDATE_DEVICE_STATS permission - */ - const int PERMISSION_UPDATE_DEVICE_STATS = 8; - - /** - * PERMISSION_UNINSTALLED is used when an app is uninstalled from the device. All internet - * related permissions need to be cleaned - */ - const int PERMISSION_UNINSTALLED = -1; - - - /** - * Sets the permission required to access a specific network. - * - * @param netId the network to set - * @param permission network permission to use - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkSetPermissionForNetwork(int netId, int permission); - - /** - * Assigns network access permissions to the specified users. - * - * @param permission network permission to use - * @param uids uid of users to set permission - */ - void networkSetPermissionForUser(int permission, in int[] uids); - - /** - * Clears network access permissions for the specified users. - * - * @param uids uid of users to clear permission - */ - void networkClearPermissionForUser(in int[] uids); - - /** - * Assigns android.permission.INTERNET and/or android.permission.UPDATE_DEVICE_STATS to the uids - * specified. Or remove all permissions from the uids. - * - * @param permission The permission to grant, it could be either PERMISSION_INTERNET and/or - * PERMISSION_UPDATE_DEVICE_STATS. If the permission is NO_PERMISSIONS, then - * revoke all permissions for the uids. - * @param uids uid of users to grant permission - */ - void trafficSetNetPermForUids(int permission, in int[] uids); - - /** - * Gives the specified user permission to protect sockets from VPNs. - * Typically used by VPN apps themselves, to ensure that the sockets - * they use to communicate with the VPN server aren't routed through - * the VPN network. - * - * @param uid uid of user to set - */ - void networkSetProtectAllow(int uid); - - /** - * Removes the permission to protect sockets from VPN. - * - * @param uid uid of user to set - */ - void networkSetProtectDeny(int uid); - - /** - * Get the status of network protect for user - * - * @param uids uid of user - * @return true if the user can protect sockets from VPN, false otherwise. - */ - boolean networkCanProtect(int uid); - - /** Only allows packets from specific UID/Interface. - @deprecated use FIREWALL_ALLOWLIST. */ - const int FIREWALL_WHITELIST = 0; - - /** Only allows packets from specific UID/Interface. */ - const int FIREWALL_ALLOWLIST = 0; - - /** Blocks packets from specific UID/Interface. - @deprecated use FIREWALL_DENYLIST. */ - const int FIREWALL_BLACKLIST = 1; - - /** Blocks packets from specific UID/Interface. */ - const int FIREWALL_DENYLIST = 1; - - /** - * Set type of firewall - * Type allowlist only allows packets from specific UID/Interface - * Type denylist blocks packets from specific UID/Interface - * - * @param firewalltype type of firewall, either FIREWALL_ALLOWLIST or FIREWALL_DENYLIST - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallSetFirewallType(int firewalltype); - - // Specify allow Rule which allows packets - const int FIREWALL_RULE_ALLOW = 1; - // Specify deny Rule which drops packets - const int FIREWALL_RULE_DENY = 2; - - // No specific chain is chosen, use general firewall chain(fw_input, fw_output) - const int FIREWALL_CHAIN_NONE = 0; - // Specify DOZABLE chain(fw_dozable) which is used in dozable mode - const int FIREWALL_CHAIN_DOZABLE = 1; - // Specify STANDBY chain(fw_standby) which is used in standby mode - const int FIREWALL_CHAIN_STANDBY = 2; - // Specify POWERSAVE chain(fw_powersave) which is used in power save mode - const int FIREWALL_CHAIN_POWERSAVE = 3; - // Specify RESTRICTED chain(fw_restricted) which is used in restricted - // networking mode - const int FIREWALL_CHAIN_RESTRICTED = 4; - - /** - * Set firewall rule for interface - * - * @param ifName the interface to allow/deny - * @param firewallRule either FIREWALL_RULE_ALLOW or FIREWALL_RULE_DENY - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallSetInterfaceRule(in @utf8InCpp String ifName, int firewallRule); - - /** - * Set firewall rule for uid - * - * @param childChain target chain - * @param uid uid to allow/deny - * @param firewallRule either FIREWALL_RULE_ALLOW or FIREWALL_RULE_DENY - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallSetUidRule(int childChain, int uid, int firewallRule); - - /** - * Enable/Disable target firewall child chain - * - * @param childChain target chain to enable - * @param enable whether to enable or disable child chain. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallEnableChildChain(int childChain, boolean enable); - - /** - * Get interface list - * - * @return An array of strings containing all the interfaces on the system. - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - @utf8InCpp String[] interfaceGetList(); - - // Must be kept in sync with constant in InterfaceConfiguration.java - const String IF_STATE_UP = "up"; - const String IF_STATE_DOWN = "down"; - - const String IF_FLAG_BROADCAST = "broadcast"; - const String IF_FLAG_LOOPBACK = "loopback"; - const String IF_FLAG_POINTOPOINT = "point-to-point"; - const String IF_FLAG_RUNNING = "running"; - const String IF_FLAG_MULTICAST = "multicast"; - - /** - * Get interface configuration - * - * @param ifName interface name - * @return An InterfaceConfigurationParcel for the specified interface. - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - InterfaceConfigurationParcel interfaceGetCfg(in @utf8InCpp String ifName); - - /** - * Set interface configuration - * - * @param cfg Interface configuration to set - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void interfaceSetCfg(in InterfaceConfigurationParcel cfg); - - /** - * Set interface IPv6 privacy extensions - * - * @param ifName interface name - * @param enable whether to enable or disable this setting. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void interfaceSetIPv6PrivacyExtensions(in @utf8InCpp String ifName, boolean enable); - - /** - * Clear all IP addresses on the given interface - * - * @param ifName interface name - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * POSIX errno. - */ - void interfaceClearAddrs(in @utf8InCpp String ifName); - - /** - * Enable or disable IPv6 on the given interface - * - * @param ifName interface name - * @param enable whether to enable or disable this setting. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void interfaceSetEnableIPv6(in @utf8InCpp String ifName, boolean enable); - - /** - * Set interface MTU - * - * @param ifName interface name - * @param mtu MTU value - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void interfaceSetMtu(in @utf8InCpp String ifName, int mtu); - - /** - * Add forwarding rule/stats on given interface. - * - * @param intIface downstream interface - * @param extIface upstream interface - */ - void tetherAddForward(in @utf8InCpp String intIface, in @utf8InCpp String extIface); - - /** - * Remove forwarding rule/stats on given interface. - * - * @param intIface downstream interface - * @param extIface upstream interface - */ - void tetherRemoveForward(in @utf8InCpp String intIface, in @utf8InCpp String extIface); - - /** - * Set the values of tcp_{rmem,wmem}. - * - * @param rmemValues the target values of tcp_rmem, each value is separated by spaces - * @param wmemValues the target values of tcp_wmem, each value is separated by spaces - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void setTcpRWmemorySize(in @utf8InCpp String rmemValues, in @utf8InCpp String wmemValues); - - /** - * Register unsolicited event listener - * Netd supports multiple unsolicited event listeners. - * - * @param listener unsolicited event listener to register - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void registerUnsolicitedEventListener(INetdUnsolicitedEventListener listener); - - /** - * Add ingress interface filtering rules to a list of UIDs - * - * For a given uid, once a filtering rule is added, the kernel will only allow packets from the - * allowed interface and loopback to be sent to the list of UIDs. - * - * Calling this method on one or more UIDs with an existing filtering rule but a different - * interface name will result in the filtering rule being updated to allow the new interface - * instead. Otherwise calling this method will not affect existing rules set on other UIDs. - * - * @param ifName the name of the interface on which the filtering rules will allow packets to - be received. - * @param uids an array of UIDs which the filtering rules will be set - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallAddUidInterfaceRules(in @utf8InCpp String ifName, in int[] uids); - - /** - * Remove ingress interface filtering rules from a list of UIDs - * - * Clear the ingress interface filtering rules from the list of UIDs which were previously set - * by firewallAddUidInterfaceRules(). Ignore any uid which does not have filtering rule. - * - * @param uids an array of UIDs from which the filtering rules will be removed - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void firewallRemoveUidInterfaceRules(in int[] uids); - - /** - * Request netd to change the current active network stats map. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void trafficSwapActiveStatsMap(); - - /** - * Retrieves OEM netd listener interface - * - * @return a IBinder object, it could be casted to oem specific interface. - */ - IBinder getOemNetd(); - - /** - * Start tethering with given configuration - * - * @param config config to start tethering. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherStartWithConfiguration(in TetherConfigParcel config); - - - /** - * Get the fwmark and its net id mask for the given network id. - * - * @param netId the network to get the fwmark and mask for. - * @return A MarkMaskParcel of the given network id. - */ - MarkMaskParcel getFwmarkForNetwork(int netId); - - /** - * Add a route for specific network - * - * @param netId the network to add the route to - * @param routeInfo parcelable with route information - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkAddRouteParcel(int netId, in android.net.RouteInfoParcel routeInfo); - - /** - * Update a route for specific network - * - * @param routeInfo parcelable with route information - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkUpdateRouteParcel(int netId, in android.net.RouteInfoParcel routeInfo); - - /** - * Remove a route for specific network - * - * @param routeInfo parcelable with route information - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void networkRemoveRouteParcel(int netId, in android.net.RouteInfoParcel routeInfo); - - /** - * Adds a tethering offload rule, or updates it if it already exists. - * - * Currently, only downstream /128 IPv6 entries are supported. An existing rule will be updated - * if the input interface and destination prefix match. Otherwise, a new rule will be created. - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The mainline - * module accesses the BPF map directly starting in S. See BpfCoordinator. - * @param rule The rule to add or update. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherOffloadRuleAdd(in TetherOffloadRuleParcel rule); - - /** - * Deletes a tethering offload rule. - * - * Currently, only downstream /128 IPv6 entries are supported. An existing rule will be deleted - * if the destination IP address and the source interface match. It is not an error if there is - * no matching rule to delete. - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The mainline - * module accesses the BPF map directly starting in S. See BpfCoordinator. - * @param rule The rule to delete. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherOffloadRuleRemove(in TetherOffloadRuleParcel rule); - - /** - * Return BPF tethering offload statistics. - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The mainline - * module accesses the BPF map directly starting in S. See BpfCoordinator. - * @return an array of TetherStatsParcel's, where each entry contains the upstream interface - * index and its tethering statistics since tethering was first started. - * There will only ever be one entry for a given interface index. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - TetherStatsParcel[] tetherOffloadGetStats(); - - /** - * Set a per-interface quota for tethering offload. - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The mainline - * module accesses the BPF map directly starting in S. See BpfCoordinator. - * @param ifIndex Index of upstream interface - * @param quotaBytes The quota defined as the number of bytes, starting from zero and counting - * from *now*. A value of QUOTA_UNLIMITED (-1) indicates there is no limit. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void tetherOffloadSetInterfaceQuota(int ifIndex, long quotaBytes); - - /** - * Return BPF tethering offload statistics and clear the stats for a given upstream. - * - * Must only be called once all offload rules have already been deleted for the given upstream - * interface. The existing stats will be fetched and returned. The stats and the limit for the - * given upstream interface will be deleted as well. - * - * The stats and limit for a given upstream interface must be initialized (using - * tetherOffloadSetInterfaceQuota) before any offload will occur on that interface. - * - * @deprecated This method has no effect and throws UnsupportedOperationException. The mainline - * module accesses the BPF map directly starting in S. See BpfCoordinator. - * @param ifIndex Index of upstream interface. - * @return TetherStatsParcel, which contains the given upstream interface index and its - * tethering statistics since tethering was first started on that upstream interface. - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - TetherStatsParcel tetherOffloadGetAndClearStats(int ifIndex); - - /** - * Creates a network. - * - * @param config the configuration of network. - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkCreate(in NativeNetworkConfig config); - - /** - * Adds the specified UID ranges to the specified network. The network can be physical or - * virtual. Traffic from the UID ranges will be routed to the network by default. The possible - * value of subsidiary priority for physical and unreachable networks is 0-999. 0 is the highest - * priority. 0 is also the default value. Virtual network supports only the default value. - * - * @param NativeUidRangeConfig a parcel contains netId, UID ranges, subsidiary priority, etc. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkAddUidRangesParcel(in NativeUidRangeConfig uidRangesConfig); - - /** - * Removes the specified UID ranges from the specified network. The network can be physical or - * virtual. Traffic from the UID ranges will no longer be routed to the network by default. The - * possible value of subsidiary priority for physical and unreachable networks is 0-999. 0 is - * the highest priority. 0 is also the default value. Virtual network supports only the default - * value. - * - * @param NativeUidRangeConfig a parcel contains netId, UID ranges, subsidiary priority, etc. - * - * @throws ServiceSpecificException in case of failure, with an error code corresponding to the - * unix errno. - */ - void networkRemoveUidRangesParcel(in NativeUidRangeConfig uidRangesConfig); - - /** - * Migrate an existing IPsec tunnel mode SA to different addresses. - * - * If the underlying network also changes, caller must update it by - * calling ipSecAddSecurityAssociation. - * - * @param migrateInfo parcelable with migration info. - * - * @throws ServiceSpecificException in case of failure, with an error code indicating the - * cause of the failure. - */ - void ipSecMigrate(in android.net.IpSecMigrateInfoParcel migrateInfo); - - /** - * IPSEC_DIRECTION_IN is used for IPsec SAs or policies that direct traffic towards the host. - */ - const int IPSEC_DIRECTION_IN = 0; - - /** - * IPSEC_DIRECTION_OUT is used for IPsec SAs or policies that direct traffic away from the host. - */ - const int IPSEC_DIRECTION_OUT = 1; - - /** - * Set the list of allowed UIDs for all networks with restrictions. - * - * This list is the entire list of restrictions for all networks known by - * netd. Calling this function always defines the entire list of restrictions, - * and networks not in the passed list are always reset to having no - * restrictions. - * - * @param NativeUidRangeConfig[] An array of allowlists, one per network. For each allowlist: - * - netId: the netId on which to set the allowlist - * - uidRanges: the UIDs allowed to use this network - * - subPriority: unused - */ - void setNetworkAllowlist(in NativeUidRangeConfig[] allowedNetworks); -} diff --git a/common/netd/binder/android/net/INetdUnsolicitedEventListener.aidl b/common/netd/binder/android/net/INetdUnsolicitedEventListener.aidl deleted file mode 100644 index 652a79cb..00000000 --- a/common/netd/binder/android/net/INetdUnsolicitedEventListener.aidl +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Copyright (c) 2018, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * Unsolicited netd events which are reported by the kernel via netlink. - * This one-way interface groups asynchronous notifications sent - * by netd to any process that registered itself via INetd.registerUnsolEventListener. - * - * {@hide} - */ -oneway interface INetdUnsolicitedEventListener { - - /** - * Notifies that an interface has been idle/active for a certain period of time. - * It is the event for idletimer. - * - * @param isActive true for active status, false for idle - * @param timerLabel unique identifier of the idletimer. - * Since NMS only set the identifier as int, only report event with int label. - * @param timestampNs kernel timestamp of this event, 0 for no timestamp - * @param uid uid of this event, -1 for no uid. - * It represents the uid that was responsible for waking the radio. - */ - void onInterfaceClassActivityChanged( - boolean isActive, - int timerLabel, - long timestampNs, - int uid); - - /** - * Notifies that a specific interface reached its quota limit. - * - * @param alertName alert name of the quota limit - * @param ifName interface which reached the limit - */ - void onQuotaLimitReached(@utf8InCpp String alertName, @utf8InCpp String ifName); - - /** - * Provides information on IPv6 DNS servers on a specific interface. - * - * @param ifName interface name - * @param lifetimeS lifetime for the DNS servers in seconds - * @param servers the address of servers. - * e.g. IpV6: "2001:4860:4860::6464" - * - */ - void onInterfaceDnsServerInfo( - @utf8InCpp String ifName, long lifetimeS, in @utf8InCpp String[] servers); - - /** - * Notifies that an address has updated on a specific interface. - * - * @param addr address that is being updated - * @param ifName the name of the interface on which the address is configured - * @param flags address flags, see ifa_flags in if_addr.h - * @param scope current scope of the address - */ - void onInterfaceAddressUpdated( - @utf8InCpp String addr, - @utf8InCpp String ifName, - int flags, - int scope); - - /** - * Notifies that an address has been removed on a specific interface. - * - * @param addr address of this change - * @param ifName the name of the interface that changed addresses - * @param flags address flags, see ifa_flags in if_addr.h - * @param scope address address scope - */ - void onInterfaceAddressRemoved( - @utf8InCpp String addr, - @utf8InCpp String ifName, - int flags, - int scope); - - /** - * Notifies that an interface has been added. - * - * @param ifName the name of the added interface - */ - void onInterfaceAdded(@utf8InCpp String ifName); - - /** - * Notifies that an interface has been removed. - * - * @param ifName the name of the removed interface - */ - void onInterfaceRemoved(@utf8InCpp String ifName); - - /** - * Notifies that the status of the specific interface has changed. - * - * @param ifName the name of the interface that changed status - * @param up true for interface up, false for down - */ - void onInterfaceChanged(@utf8InCpp String ifName, boolean up); - - /** - * Notifies that the link state of the specific interface has changed. - * - * @param ifName the name of the interface whose link state has changed - * @param up true for interface link state up, false for link state down - */ - void onInterfaceLinkStateChanged(@utf8InCpp String ifName, boolean up); - - /** - * Notifies that an IP route has changed. - * - * @param updated true for update, false for remove - * @param route destination prefix of this route, e.g., "2001:db8::/64" - * @param gateway address of gateway, empty string for no gateway - * @param ifName interface name of this route, empty string for no interface - */ - void onRouteChanged( - boolean updated, - @utf8InCpp String route, - @utf8InCpp String gateway, - @utf8InCpp String ifName); - - /** - * Notifies that kernel has detected a socket sending data not wrapped - * inside a layer of SSL/TLS encryption. - * - * @param uid uid of this event - * @param hex packet content in hex format - */ - void onStrictCleartextDetected(int uid, @utf8InCpp String hex); -} diff --git a/common/netd/binder/android/net/InterfaceConfigurationParcel.aidl b/common/netd/binder/android/net/InterfaceConfigurationParcel.aidl deleted file mode 100644 index c20792c0..00000000 --- a/common/netd/binder/android/net/InterfaceConfigurationParcel.aidl +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * Configuration details for a network interface. - * - * {@hide} - */ -parcelable InterfaceConfigurationParcel { - @utf8InCpp String ifName; - @utf8InCpp String hwAddr; - @utf8InCpp String ipv4Addr; - int prefixLength; - /** - * Interface flags, String versions of IFF_* defined in netd/if.h - */ - @utf8InCpp String[] flags; -} diff --git a/common/netd/binder/android/net/IpSecMigrateInfoParcel.aidl b/common/netd/binder/android/net/IpSecMigrateInfoParcel.aidl deleted file mode 100644 index e192d663..00000000 --- a/common/netd/binder/android/net/IpSecMigrateInfoParcel.aidl +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 2022, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -@JavaOnlyImmutable -parcelable IpSecMigrateInfoParcel { - /** The unique identifier for allocated resources. */ - int requestId; - /** - * The address family identifier for the new selector. Can be AF_INET - * or AF_INET6. - */ - int selAddrFamily; - /** IPSEC_DIRECTION_IN or IPSEC_DIRECTION_OUT. */ - int direction; - /** - * The IP address for the current sending endpoint. - * - * The local address for an outbound SA and the remote address for an - * inbound SA. - */ - @utf8InCpp String oldSourceAddress; - /** - * The IP address for the current receiving endpoint. - * - * The remote address for an outbound SA and the local address for an - * inbound SA. - */ - @utf8InCpp String oldDestinationAddress; - /** The IP address for the new sending endpoint. */ - @utf8InCpp String newSourceAddress; - /** The IP address for the new receiving endpoint. */ - @utf8InCpp String newDestinationAddress; - /** The identifier for the XFRM interface. */ - int interfaceId; -} diff --git a/common/netd/binder/android/net/MarkMaskParcel.aidl b/common/netd/binder/android/net/MarkMaskParcel.aidl deleted file mode 100644 index 932b7bff..00000000 --- a/common/netd/binder/android/net/MarkMaskParcel.aidl +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * Structure that stores a firewall mark and its mask. - * - * {@hide} - */ -parcelable MarkMaskParcel { - // The fwmark. - int mark; - // Net id mask of fwmark. - int mask; -} diff --git a/common/netd/binder/android/net/NativeNetworkConfig.aidl b/common/netd/binder/android/net/NativeNetworkConfig.aidl deleted file mode 100644 index 96eccc7a..00000000 --- a/common/netd/binder/android/net/NativeNetworkConfig.aidl +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -import android.net.NativeNetworkType; -import android.net.NativeVpnType; - -/** - * The configuration to create a network. - * - * {@hide} - */ -@JavaDerive(toString=true, equals=true) -@JavaOnlyImmutable -parcelable NativeNetworkConfig { - /** The networkId to create. */ - int netId; - - /** - * The type of network : virtual, physical or physical local network. - */ - NativeNetworkType networkType = NativeNetworkType.PHYSICAL; - - /** - * The permission necessary to use the network. Must be PERMISSION_NONE, PERMISSION_NETWORK - * or PERMISSION_SYSTEM. Ignored for virtual network types. - */ - int permission; - - /** - * For virtual networks. Whether unprivileged apps are allowed to bypass the VPN. Ignored for - * all other network types. - */ - boolean secure; - - /** For virtual networks. The type of VPN to create. Ignored for all other network types. */ - NativeVpnType vpnType = NativeVpnType.PLATFORM; - - /** - * For virtual networks. Whether local traffic is excluded from the VPN. - */ - boolean excludeLocalRoutes = false; -} diff --git a/common/netd/binder/android/net/NativeNetworkType.aidl b/common/netd/binder/android/net/NativeNetworkType.aidl deleted file mode 100644 index 70055357..00000000 --- a/common/netd/binder/android/net/NativeNetworkType.aidl +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -@Backing(type="int") -enum NativeNetworkType { - /** - * Physical network type. - */ - PHYSICAL = 0, - - /** - * Virtual private network type. - */ - VIRTUAL = 1, - - /** - * Physical local network, such as a tethering downstream. - */ - PHYSICAL_LOCAL = 2, -} diff --git a/common/netd/binder/android/net/NativeVpnType.aidl b/common/netd/binder/android/net/NativeVpnType.aidl deleted file mode 100644 index cd1b4474..00000000 --- a/common/netd/binder/android/net/NativeVpnType.aidl +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -@Backing(type="int") -enum NativeVpnType { - /** - * A VPN created by an app using the VpnService API. - */ - SERVICE = 1, - - /** - * A VPN created using a VpnManager API such as startProvisionedVpnProfile. - */ - PLATFORM = 2, - - /** - * An IPsec VPN created by the built-in LegacyVpnRunner. - */ - LEGACY = 3, - - /** - * An VPN created by OEM code through other means than VpnService or VpnManager. - */ - OEM = 4, -}
\ No newline at end of file diff --git a/common/netd/binder/android/net/RouteInfoParcel.aidl b/common/netd/binder/android/net/RouteInfoParcel.aidl deleted file mode 100644 index fcc86e32..00000000 --- a/common/netd/binder/android/net/RouteInfoParcel.aidl +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright (c) 2020, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -parcelable RouteInfoParcel { - // The destination of the route. - @utf8InCpp String destination; - // The name of interface of the route. This interface should be assigned to the netID. - @utf8InCpp String ifName; - // The route's next hop address, or one of the NEXTHOP_* constants defined in INetd.aidl. - @utf8InCpp String nextHop; - // The MTU of the route. - int mtu; -} diff --git a/common/netd/binder/android/net/TetherConfigParcel.aidl b/common/netd/binder/android/net/TetherConfigParcel.aidl deleted file mode 100644 index 9f371ce1..00000000 --- a/common/netd/binder/android/net/TetherConfigParcel.aidl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * The configuration to start tethering. - * - * {@hide} - */ -parcelable TetherConfigParcel { - // Whether to enable or disable legacy DNS proxy server. - boolean usingLegacyDnsProxy; - // DHCP ranges to set. - // dhcpRanges might contain many addresss {addr1, addr2, addr3, addr4...} - // Netd splits them into ranges: addr1-addr2, addr3-addr4, etc. - // An odd number of addrs will fail. - @utf8InCpp String[] dhcpRanges; -} diff --git a/common/netd/binder/android/net/TetherOffloadRuleParcel.aidl b/common/netd/binder/android/net/TetherOffloadRuleParcel.aidl deleted file mode 100644 index c549e610..00000000 --- a/common/netd/binder/android/net/TetherOffloadRuleParcel.aidl +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * Represents a forwarding rule for tethering offload. - * - * {@hide} - */ -parcelable TetherOffloadRuleParcel { - /** The interface index of the input interface. */ - int inputInterfaceIndex; - - /** The interface index of the output interface. */ - int outputInterfaceIndex; - - /** The base IP address of the destination prefix as a byte array. */ - byte[] destination; - - /** The destination prefix length. */ - int prefixLength; - - /** The source link-layer address. Currently, must be a 6-byte MAC address.*/ - byte[] srcL2Address; - - /** The destination link-layer address. Currently, must be a 6-byte MAC address. */ - byte[] dstL2Address; - - /** The outbound path mtu. */ - int pmtu = 1500; -} diff --git a/common/netd/binder/android/net/TetherStatsParcel.aidl b/common/netd/binder/android/net/TetherStatsParcel.aidl deleted file mode 100644 index 6bf60a86..00000000 --- a/common/netd/binder/android/net/TetherStatsParcel.aidl +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * The statistics of tethering interface - * - * {@hide} - */ -parcelable TetherStatsParcel { - /** - * Parcel representing tethering interface statistics. - * - * This parcel is used by tetherGetStats, tetherOffloadGetStats and - * tetherOffloadGetAndClearStats in INetd.aidl. tetherGetStats uses this parcel to return the - * tethering statistics since netd startup and presents the interface via its interface name. - * Both tetherOffloadGetStats and tetherOffloadGetAndClearStats use this parcel to return - * the tethering statistics since tethering was first started. They present the interface via - * its interface index. Note that the interface must be presented by either interface name - * |iface| or interface index |ifIndex| in this parcel. The unused interface name is set to - * an empty string "" by default and the unused interface index is set to 0 by default. - */ - - /** The interface name. */ - @utf8InCpp String iface; - - /** Total number of received bytes. */ - long rxBytes; - - /** Total number of received packets. */ - long rxPackets; - - /** Total number of transmitted bytes. */ - long txBytes; - - /** Total number of transmitted packets. */ - long txPackets; - - /** The interface index. */ - int ifIndex = 0; -} diff --git a/common/netd/binder/android/net/UidRangeParcel.aidl b/common/netd/binder/android/net/UidRangeParcel.aidl deleted file mode 100644 index 8f1fef6f..00000000 --- a/common/netd/binder/android/net/UidRangeParcel.aidl +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net; - -/** - * An inclusive range of UIDs. - * - * {@hide} - */ -@JavaOnlyImmutable @JavaDerive(toString=true, equals=true) -parcelable UidRangeParcel { - int start; - int stop; -} diff --git a/common/netd/binder/android/net/mdns/aidl/DiscoveryInfo.aidl b/common/netd/binder/android/net/mdns/aidl/DiscoveryInfo.aidl deleted file mode 100644 index f8273828..00000000 --- a/common/netd/binder/android/net/mdns/aidl/DiscoveryInfo.aidl +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -/** - * Discovery service information. - * This information combine all arguments that used by both request and callback. - * Arguments are used by request: - * - id - * - registrationType - * - interfaceIdx - * - * Arguments are used by callback: - * - id - * - serviceName - * - registrationType - * - domainName - * - interfaceIdx - * - netId - * - result - * - * {@hide} - */ -@JavaOnlyImmutable -@JavaDerive(equals=true, toString=true) -parcelable DiscoveryInfo { - /** - * The operation ID. - * Must be unique among all operations (registration/discovery/resolution/getting address) and - * can't be reused. - * To stop a operation, it needs to use corresponding operation id. - */ - int id; - - /** - * The discovery result. - */ - int result; - - /** - * The discovered service name. - */ - @utf8InCpp String serviceName; - - /** - * The service type being discovered for followed by the protocol, separated by a dot - * (e.g. "_ftp._tcp"). The transport protocol must be "_tcp" or "_udp". - */ - @utf8InCpp String registrationType; - - /** - * The domain of the discovered service instance. - */ - @utf8InCpp String domainName; - - /** - * The interface index on which to discover services. 0 indicates "all interfaces". - */ - int interfaceIdx; - - /** - * The net id on which the service is advertised. - */ - int netId; -} diff --git a/common/netd/binder/android/net/mdns/aidl/GetAddressInfo.aidl b/common/netd/binder/android/net/mdns/aidl/GetAddressInfo.aidl deleted file mode 100644 index d53174a4..00000000 --- a/common/netd/binder/android/net/mdns/aidl/GetAddressInfo.aidl +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -/** - * Get service address information. - * This information combine all arguments that used by both request and callback. - * Arguments are used by request: - * - id - * - hostname - * - interfaceIdx - * - * Arguments are used by callback: - * - id - * - hostname - * - interfaceIdx - * - netId - * - address - * - result - * - * {@hide} - */ -@JavaOnlyImmutable -@JavaDerive(equals=true, toString=true) -parcelable GetAddressInfo { - /** - * The operation ID. - */ - int id; - - /** - * The getting address result. - */ - int result; - - /** - * The fully qualified domain name of the host to be queried for. - */ - @utf8InCpp String hostname; - - /** - * The service address info, it's IPv4 or IPv6 addres. - */ - @utf8InCpp String address; - - /** - * The interface index on which to issue the query. 0 indicates "all interfaces". - */ - int interfaceIdx; - - /** - * The net id to which the answers pertain. - */ - int netId; -} diff --git a/common/netd/binder/android/net/mdns/aidl/IMDns.aidl b/common/netd/binder/android/net/mdns/aidl/IMDns.aidl deleted file mode 100644 index 255d70ff..00000000 --- a/common/netd/binder/android/net/mdns/aidl/IMDns.aidl +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -import android.net.mdns.aidl.DiscoveryInfo; -import android.net.mdns.aidl.GetAddressInfo; -import android.net.mdns.aidl.IMDnsEventListener; -import android.net.mdns.aidl.RegistrationInfo; -import android.net.mdns.aidl.ResolutionInfo; - -/** {@hide} */ -interface IMDns { - /** - * Start the MDNSResponder daemon. - * - * @throws ServiceSpecificException with unix errno EALREADY if daemon is already running. - */ - void startDaemon(); - - /** - * Stop the MDNSResponder daemon. - * - * @throws ServiceSpecificException with unix errno EBUSY if daemon is still in use. - */ - void stopDaemon(); - - /** - * Start registering a service. - * This operation will send a service registration request to MDNSResponder. Register a listener - * via IMDns#registerEventListener to get the registration result SERVICE_REGISTERED/ - * SERVICE_REGISTRATION_FAILED from callback IMDnsEventListener#onServiceRegistrationStatus. - * - * @param info The service information to register. - * - * @throws ServiceSpecificException with one of the following error values: - * - Unix errno EBUSY if request id is already in use. - * - kDNSServiceErr_* list in dns_sd.h if registration fail. - */ - void registerService(in RegistrationInfo info); - - /** - * Start discovering services. - * This operation will send a request to MDNSResponder to discover services. Register a listener - * via IMDns#registerEventListener to get the discovery result SERVICE_FOUND/SERVICE_LOST/ - * SERVICE_DISCOVERY_FAILED from callback IMDnsEventListener#onServiceDiscoveryStatus. - * - * @param info The service to discover. - * - * @throws ServiceSpecificException with one of the following error values: - * - Unix errno EBUSY if request id is already in use. - * - kDNSServiceErr_* list in dns_sd.h if discovery fail. - */ - void discover(in DiscoveryInfo info); - - /** - * Start resolving the target service. - * This operation will send a request to MDNSResponder to resolve the target service. Register a - * listener via IMDns#registerEventListener to get the resolution result SERVICE_RESOLVED/ - * SERVICE_RESOLUTION_FAILED from callback IMDnsEventListener#onServiceResolutionStatus. - * - * @param info The service to resolve. - * - * @throws ServiceSpecificException with one of the following error values: - * - Unix errno EBUSY if request id is already in use. - * - kDNSServiceErr_* list in dns_sd.h if resolution fail. - */ - void resolve(in ResolutionInfo info); - - /** - * Start getting the target service address. - * This operation will send a request to MDNSResponder to get the target service address. - * Register a listener via IMDns#registerEventListener to get the query result - * SERVICE_GET_ADDR_SUCCESS/SERVICE_GET_ADDR_FAILED from callback - * IMDnsEventListener#onGettingServiceAddressStatus. - * - * @param info the getting service address information. - * - * @throws ServiceSpecificException with one of the following error values: - * - Unix errno EBUSY if request id is already in use. - * - kDNSServiceErr_* list in dns_sd.h if getting address fail. - */ - void getServiceAddress(in GetAddressInfo info); - - /** - * Stop a operation which's requested before. - * - * @param id the operation id to be stopped. - * - * @throws ServiceSpecificException with unix errno ESRCH if request id is not in use. - */ - void stopOperation(int id); - - /** - * Register an event listener. - * - * @param listener The listener to be registered. - * - * @throws ServiceSpecificException with one of the following error values: - * - Unix errno EINVAL if listener is null. - * - Unix errno EEXIST if register duplicated listener. - */ - void registerEventListener(in IMDnsEventListener listener); - - /** - * Unregister an event listener. - * - * @param listener The listener to be unregistered. - * - * @throws ServiceSpecificException with unix errno EINVAL if listener is null. - */ - void unregisterEventListener(in IMDnsEventListener listener); -} - diff --git a/common/netd/binder/android/net/mdns/aidl/IMDnsEventListener.aidl b/common/netd/binder/android/net/mdns/aidl/IMDnsEventListener.aidl deleted file mode 100644 index a202a261..00000000 --- a/common/netd/binder/android/net/mdns/aidl/IMDnsEventListener.aidl +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright (c) 2022, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -import android.net.mdns.aidl.DiscoveryInfo; -import android.net.mdns.aidl.GetAddressInfo; -import android.net.mdns.aidl.RegistrationInfo; -import android.net.mdns.aidl.ResolutionInfo; - -/** - * MDNS events which are reported by the MDNSResponder. - * This one-way interface defines the asynchronous notifications sent by mdns service to any process - * that registered itself via IMDns.registerEventListener. - * - * {@hide} - */ -oneway interface IMDnsEventListener { - /** - * Types for MDNS operation result. - * These are in sync with frameworks/libs/net/common/netd/libnetdutils/include/netdutils/\ - * ResponseCode.h - */ - const int SERVICE_DISCOVERY_FAILED = 602; - const int SERVICE_FOUND = 603; - const int SERVICE_LOST = 604; - const int SERVICE_REGISTRATION_FAILED = 605; - const int SERVICE_REGISTERED = 606; - const int SERVICE_RESOLUTION_FAILED = 607; - const int SERVICE_RESOLVED = 608; - const int SERVICE_GET_ADDR_FAILED = 611; - const int SERVICE_GET_ADDR_SUCCESS = 612; - - /** - * Notify service registration status. - */ - void onServiceRegistrationStatus(in RegistrationInfo status); - - /** - * Notify service discovery status. - */ - void onServiceDiscoveryStatus(in DiscoveryInfo status); - - /** - * Notify service resolution status. - */ - void onServiceResolutionStatus(in ResolutionInfo status); - - /** - * Notify getting service address status. - */ - void onGettingServiceAddressStatus(in GetAddressInfo status); -} diff --git a/common/netd/binder/android/net/mdns/aidl/RegistrationInfo.aidl b/common/netd/binder/android/net/mdns/aidl/RegistrationInfo.aidl deleted file mode 100644 index 54835594..00000000 --- a/common/netd/binder/android/net/mdns/aidl/RegistrationInfo.aidl +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -/** - * Registration service information. - * This information combine all arguments that used by both request and callback. - * Arguments are used by request: - * - id - * - serviceName - * - registrationType - * - port - * - txtRecord - * - interfaceIdx - * - * Arguments are used by callback: - * - id - * - serviceName - * - registrationType - * - result - * - * {@hide} - */ -@JavaOnlyImmutable -@JavaDerive(equals=true, toString=true) -parcelable RegistrationInfo { - /** - * The operation ID. - */ - int id; - - /** - * The registration result. - */ - int result; - - /** - * The service name to be registered. - */ - @utf8InCpp String serviceName; - - /** - * The service type followed by the protocol, separated by a dot (e.g. "_ftp._tcp"). The service - * type must be an underscore, followed by 1-15 characters, which may be letters, digits, or - * hyphens. The transport protocol must be "_tcp" or "_udp". New service types should be - * registered at <http://www.dns-sd.org/ServiceTypes.html>. - */ - @utf8InCpp String registrationType; - - /** - * The port on which the service accepts connections. - */ - int port; - - /** - * The txt record. - */ - byte[] txtRecord; - - /** - * The interface index on which to register the service. 0 indicates "all interfaces". - */ - int interfaceIdx; -} diff --git a/common/netd/binder/android/net/mdns/aidl/ResolutionInfo.aidl b/common/netd/binder/android/net/mdns/aidl/ResolutionInfo.aidl deleted file mode 100644 index 26e0cee7..00000000 --- a/common/netd/binder/android/net/mdns/aidl/ResolutionInfo.aidl +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.mdns.aidl; - -/** - * Resolution service information. - * This information combine all arguments that used by both request and callback. - * Arguments are used by request: - * - id - * - serviceName - * - registrationType - * - domain - * - interfaceIdx - * - * Arguments are used by callback: - * - id - * - port - * - serviceFullName - * - hostname - * - txtRecord - * - interfaceIdx - * - result - * - * {@hide} - */ -@JavaOnlyImmutable -@JavaDerive(equals=true, toString=true) -parcelable ResolutionInfo { - /** - * The operation ID. - */ - int id; - - /** - * The resolution result. - */ - int result; - - /** - * The service name to be resolved. - */ - @utf8InCpp String serviceName; - - /** - * The service type to be resolved. - */ - @utf8InCpp String registrationType; - - /** - * The service domain to be resolved. - */ - @utf8InCpp String domain; - - /** - * The resolved full service domain name, in the form <servicename>.<protocol>.<domain>. - */ - @utf8InCpp String serviceFullName; - - /** - * The target hostname of the machine providing the service. - */ - @utf8InCpp String hostname; - - /** - * The port on which connections are accepted for this service. - */ - int port; - - /** - * The service's txt record. - */ - byte[] txtRecord; - - /** - * The interface index on which to resolve the service. 0 indicates "all interfaces". - */ - int interfaceIdx; -} diff --git a/common/netd/binder/android/net/metrics/INetdEventListener.aidl b/common/netd/binder/android/net/metrics/INetdEventListener.aidl deleted file mode 100644 index ef1b2cbc..00000000 --- a/common/netd/binder/android/net/metrics/INetdEventListener.aidl +++ /dev/null @@ -1,128 +0,0 @@ -/** - * Copyright (c) 2016, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.metrics; - -/** - * Logs netd events. - * - * {@hide} - */ -oneway interface INetdEventListener { - const int EVENT_GETADDRINFO = 1; - const int EVENT_GETHOSTBYNAME = 2; - const int EVENT_GETHOSTBYADDR = 3; - const int EVENT_RES_NSEND = 4; - - const int REPORTING_LEVEL_NONE = 0; - const int REPORTING_LEVEL_METRICS = 1; - const int REPORTING_LEVEL_FULL = 2; - - // Maximum number of IP addresses logged for DNS lookups before we truncate the full list. - const int DNS_REPORTED_IP_ADDRESSES_LIMIT = 10; - - /** - * Logs a DNS lookup function call (getaddrinfo and gethostbyname). - * - * @param netId the ID of the network the lookup was performed on. - * @param eventType one of the EVENT_* constants in this interface. - * @param returnCode the return value of the function call. - * @param latencyMs the latency of the function call. - * @param hostname the name that was looked up. - * @param ipAddresses (possibly a subset of) the IP addresses returned. - * At most {@link #DNS_REPORTED_IP_ADDRESSES_LIMIT} addresses are logged. - * @param ipAddressesCount the number of IP addresses returned. May be different from the length - * of ipAddresses if there were too many addresses to log. - * @param uid the UID of the application that performed the query. - */ - void onDnsEvent(int netId, int eventType, int returnCode, int latencyMs, - @utf8InCpp String hostname, in @utf8InCpp String[] ipAddresses, - int ipAddressesCount, int uid); - - /** - * Represents a private DNS validation success or failure. - * - * @param netId the ID of the network the validation was performed on. - * @param ipAddress the IP address for which validation was performed. - * @param hostname the hostname for which validation was performed. - * @param validated whether or not validation was successful. - */ - void onPrivateDnsValidationEvent(int netId, String ipAddress, String hostname, - boolean validated); - - /** - * Logs a single connect library call. - * - * @param netId the ID of the network the connect was performed on. - * @param error 0 if the connect call succeeded, otherwise errno if it failed. - * @param latencyMs the latency of the connect call. - * @param ipAddr destination IP address. - * @param port destination port number. - * @param uid the UID of the application that performed the connection. - */ - void onConnectEvent(int netId, int error, int latencyMs, String ipAddr, int port, int uid); - - /** - * Logs a single RX packet which caused the main CPU to exit sleep state. - * @param prefix arbitrary string provided via wakeupAddInterface() - * @param uid UID of the destination process or -1 if no UID is available. - * @param ethertype of the RX packet encoded in an int in native order, or -1 if not available. - * @param ipNextHeader ip protocol of the RX packet as IPPROTO_* number, - or -1 if the packet was not IPv4 or IPv6. - * @param dstHw destination hardware address, or 0 if not available. - * @param srcIp source IP address, or null if not available. - * @param dstIp destination IP address, or null if not available. - * @param srcPort src port of RX packet in native order, or -1 if the packet was not UDP or TCP. - * @param dstPort dst port of RX packet in native order, or -1 if the packet was not UDP or TCP. - * @param timestampNs receive timestamp for the offending packet. In units of nanoseconds and - * synchronized to CLOCK_MONOTONIC. - */ - void onWakeupEvent(String prefix, int uid, int ethertype, int ipNextHeader, in byte[] dstHw, - String srcIp, String dstIp, int srcPort, int dstPort, long timestampNs); - - /** - * An event sent after every Netlink sock_diag poll performed by Netd. This reported batch - * groups TCP socket stats aggregated by network id. Per-network data are stored in a - * structure-of-arrays style where networkIds, sentPackets, lostPackets, rttUs, and - * sentAckDiffMs have the same length. Stats for the i-th network is spread across all these - * arrays at index i. - * @param networkIds an array of network ids for which there was tcp socket stats to collect in - * the last sock_diag poll. - * @param sentPackets an array of packet sent across all TCP sockets still alive and new - TCP sockets since the last sock_diag poll, summed per network id. - * @param lostPackets, an array of packet lost across all TCP sockets still alive and new - TCP sockets since the last sock_diag poll, summed per network id. - * @param rttUs an array of smoothed round trip times in microseconds, averaged across all TCP - sockets since the last sock_diag poll for a given network id. - * @param sentAckDiffMs an array of milliseconds duration between the last packet sent and the - last ack received for a socket, averaged across all TCP sockets for a network id. - */ - void onTcpSocketStatsEvent(in int[] networkIds, in int[] sentPackets, - in int[] lostPackets, in int[] rttUs, in int[] sentAckDiffMs); - - /** - * Represents adding or removing a NAT64 prefix. - * - * @param netId the ID of the network the prefix was discovered on. - * @param added true if the NAT64 prefix was added, or false if the NAT64 prefix was removed. - * There is only one prefix at a time for each netId. If a prefix is added, it replaces - * the previous-added prefix. - * @param prefixString the detected NAT64 prefix as a string literal. - * @param prefixLength the prefix length associated with this NAT64 prefix. - */ - void onNat64PrefixEvent(int netId, boolean added, @utf8InCpp String prefixString, - int prefixLength); -} diff --git a/common/netd/binder/android/net/netd/aidl/NativeUidRangeConfig.aidl b/common/netd/binder/android/net/netd/aidl/NativeUidRangeConfig.aidl deleted file mode 100644 index 99497a86..00000000 --- a/common/netd/binder/android/net/netd/aidl/NativeUidRangeConfig.aidl +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.net.netd.aidl; - -import android.net.UidRangeParcel; - -/** - * The configuration to add or remove UID ranges. - * - * {@hide} - */ -@JavaDerive(toString=true, equals=true) -@JavaOnlyImmutable -parcelable NativeUidRangeConfig { - /** The network ID of the network to add/remove the ranges to/from. */ - int netId; - - /** A set of non-overlapping ranges of UIDs. */ - UidRangeParcel[] uidRanges; - - /** - * The priority of this UID range config. 0 is the highest priority; 999 is the lowest priority. - * The function of this parameter is to adjust the priority when the same UID is set to - * different networks for different features. - */ - int subPriority; -}
\ No newline at end of file |