Add NETLINK_XFRM and IPPROTO_ESP
Allow the system server (IpSecService) to create xfrm netlink
socket and set up ESP SA
Bug: 308011229
Test: make
Change-Id: I108cc538a845a39b5a7560d8e3654cf27e32ea94
diff --git a/api/current.txt b/api/current.txt
index fbdd533..c61243f 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -339,6 +339,7 @@
field public static final int IFF_RUNNING;
field public static final int IFF_SLAVE;
field public static final int IFF_UP;
+ field public static final int IPPROTO_ESP;
field public static final int IPPROTO_ICMP;
field public static final int IPPROTO_ICMPV6;
field public static final int IPPROTO_IP;
@@ -391,6 +392,7 @@
field public static final int NETLINK_INET_DIAG;
field public static final int NETLINK_NETFILTER;
field public static final int NETLINK_ROUTE;
+ field public static final int NETLINK_XFRM;
field public static final int NI_DGRAM;
field public static final int NI_NAMEREQD;
field public static final int NI_NOFQDN;
diff --git a/luni/src/main/java/android/system/OsConstants.java b/luni/src/main/java/android/system/OsConstants.java
index 9435cae..c078f92 100644
--- a/luni/src/main/java/android/system/OsConstants.java
+++ b/luni/src/main/java/android/system/OsConstants.java
@@ -392,6 +392,14 @@
public static final int IPPROTO_RAW = placeholder();
public static final int IPPROTO_TCP = placeholder();
public static final int IPPROTO_UDP = placeholder();
+
+ /**
+ * Encapsulation Security Payload protocol
+ *
+ * <p>Defined in /uapi/linux/in.h
+ */
+ public static final int IPPROTO_ESP = placeholder();
+
public static final int IPV6_CHECKSUM = placeholder();
public static final int IPV6_MULTICAST_HOPS = placeholder();
public static final int IPV6_MULTICAST_IF = placeholder();
@@ -468,6 +476,14 @@
* SELinux enforces that only system_server and netd may use this netlink socket type.
*/
public static final int NETLINK_INET_DIAG = placeholder();
+
+ /**
+ * SELinux enforces that only system_server and netd may use this netlink socket type.
+ *
+ * @see <a href="https://man7.org/linux/man-pages/man7/netlink.7.html">netlink(7)</a>
+ */
+ public static final int NETLINK_XFRM = placeholder();
+
public static final int NI_DGRAM = placeholder();
public static final int NI_NAMEREQD = placeholder();
public static final int NI_NOFQDN = placeholder();
diff --git a/luni/src/main/native/android_system_OsConstants.cpp b/luni/src/main/native/android_system_OsConstants.cpp
index fcbe1f9..3f8ce60 100644
--- a/luni/src/main/native/android_system_OsConstants.cpp
+++ b/luni/src/main/native/android_system_OsConstants.cpp
@@ -324,6 +324,7 @@
initConstant(env, c, "IPPROTO_RAW", IPPROTO_RAW);
initConstant(env, c, "IPPROTO_TCP", IPPROTO_TCP);
initConstant(env, c, "IPPROTO_UDP", IPPROTO_UDP);
+ initConstant(env, c, "IPPROTO_ESP", IPPROTO_ESP);
initConstant(env, c, "IPV6_CHECKSUM", IPV6_CHECKSUM);
initConstant(env, c, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS);
initConstant(env, c, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF);
@@ -405,6 +406,7 @@
initConstant(env, c, "NETLINK_NETFILTER", NETLINK_NETFILTER);
initConstant(env, c, "NETLINK_ROUTE", NETLINK_ROUTE);
initConstant(env, c, "NETLINK_INET_DIAG", NETLINK_INET_DIAG);
+ initConstant(env, c, "NETLINK_XFRM", NETLINK_XFRM);
initConstant(env, c, "NI_DGRAM", NI_DGRAM);
initConstant(env, c, "NI_NAMEREQD", NI_NAMEREQD);
initConstant(env, c, "NI_NOFQDN", NI_NOFQDN);