From a52aca70eed31141c4f5b389cb896cdada6e0f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Mon, 16 May 2022 13:59:12 -0700 Subject: [PATCH] move netd maps and progs into /sys/fs/bpf/netd_shared/... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (out of current /sys/fs/bpf/net_shared/...) This will allow genfscon regexp changes in a followup selinux commit. Note that this has a hard dependency on system/bpf change 'bpfloader: add support for netd_shared and net_private subdirs' which also bumps bpfloader to v0.13. This was merged May 12, 2022 (into both aosp/master and tm-dev) and it is in Android T starting with Beta 3 release. This isn't really an issue since amusingly T Beta 2 is already incompatible with current mainline releases due to the snap reverting a previous required bpfloader system/bpf change: move net_shared bpf programs into net_shared subdirectory See: http://b/232050459#comment14 So this doesn't break T Beta1/2, since they already don't work, and Beta3 will work. Bug: 218408035 Test: TreeHugger Signed-off-by: Maciej Żenczykowski Change-Id: Id5f14d6e3f11cfe35d9d8a9496548a2bc4d022ec (cherry picked from commit 6d116d0f38196625d205e8c76a17b01b61fff246) Merged-In: Id5f14d6e3f11cfe35d9d8a9496548a2bc4d022ec --- bpf_progs/Android.bp | 2 +- bpf_progs/bpf_shared.h | 52 ++++++++++--------- .../server/net/BpfInterfaceMapUpdater.java | 2 +- .../server/net/NetworkStatsService.java | 10 ++-- .../android/server/ConnectivityService.java | 2 +- tests/mts/bpf_existence_test.cpp | 38 +++++++------- 6 files changed, 55 insertions(+), 51 deletions(-) diff --git a/bpf_progs/Android.bp b/bpf_progs/Android.bp index 0e7b22d611..4fc678f281 100644 --- a/bpf_progs/Android.bp +++ b/bpf_progs/Android.bp @@ -119,5 +119,5 @@ bpf { include_dirs: [ "frameworks/libs/net/common/netd/libnetdutils/include", ], - sub_dir: "net_shared", + sub_dir: "netd_shared", } diff --git a/bpf_progs/bpf_shared.h b/bpf_progs/bpf_shared.h index 9a246a6a5c..14fcdd695b 100644 --- a/bpf_progs/bpf_shared.h +++ b/bpf_progs/bpf_shared.h @@ -98,29 +98,29 @@ static const int IFACE_STATS_MAP_SIZE = 1000; static const int CONFIGURATION_MAP_SIZE = 2; static const int UID_OWNER_MAP_SIZE = 2000; -#define BPF_PATH "/sys/fs/bpf/net_shared/" +#define BPF_NETD_PATH "/sys/fs/bpf/netd_shared/" -#define BPF_EGRESS_PROG_PATH BPF_PATH "prog_netd_cgroupskb_egress_stats" -#define BPF_INGRESS_PROG_PATH BPF_PATH "prog_netd_cgroupskb_ingress_stats" -#define XT_BPF_INGRESS_PROG_PATH BPF_PATH "prog_netd_skfilter_ingress_xtbpf" -#define XT_BPF_EGRESS_PROG_PATH BPF_PATH "prog_netd_skfilter_egress_xtbpf" -#define XT_BPF_ALLOWLIST_PROG_PATH BPF_PATH "prog_netd_skfilter_allowlist_xtbpf" -#define XT_BPF_DENYLIST_PROG_PATH BPF_PATH "prog_netd_skfilter_denylist_xtbpf" -#define CGROUP_SOCKET_PROG_PATH BPF_PATH "prog_netd_cgroupsock_inet_create" +#define BPF_EGRESS_PROG_PATH BPF_NETD_PATH "prog_netd_cgroupskb_egress_stats" +#define BPF_INGRESS_PROG_PATH BPF_NETD_PATH "prog_netd_cgroupskb_ingress_stats" +#define XT_BPF_INGRESS_PROG_PATH BPF_NETD_PATH "prog_netd_skfilter_ingress_xtbpf" +#define XT_BPF_EGRESS_PROG_PATH BPF_NETD_PATH "prog_netd_skfilter_egress_xtbpf" +#define XT_BPF_ALLOWLIST_PROG_PATH BPF_NETD_PATH "prog_netd_skfilter_allowlist_xtbpf" +#define XT_BPF_DENYLIST_PROG_PATH BPF_NETD_PATH "prog_netd_skfilter_denylist_xtbpf" +#define CGROUP_SOCKET_PROG_PATH BPF_NETD_PATH "prog_netd_cgroupsock_inet_create" #define TC_BPF_INGRESS_ACCOUNT_PROG_NAME "prog_netd_schedact_ingress_account" -#define TC_BPF_INGRESS_ACCOUNT_PROG_PATH BPF_PATH TC_BPF_INGRESS_ACCOUNT_PROG_NAME +#define TC_BPF_INGRESS_ACCOUNT_PROG_PATH BPF_NETD_PATH TC_BPF_INGRESS_ACCOUNT_PROG_NAME -#define COOKIE_TAG_MAP_PATH BPF_PATH "map_netd_cookie_tag_map" -#define UID_COUNTERSET_MAP_PATH BPF_PATH "map_netd_uid_counterset_map" -#define APP_UID_STATS_MAP_PATH BPF_PATH "map_netd_app_uid_stats_map" -#define STATS_MAP_A_PATH BPF_PATH "map_netd_stats_map_A" -#define STATS_MAP_B_PATH BPF_PATH "map_netd_stats_map_B" -#define IFACE_INDEX_NAME_MAP_PATH BPF_PATH "map_netd_iface_index_name_map" -#define IFACE_STATS_MAP_PATH BPF_PATH "map_netd_iface_stats_map" -#define CONFIGURATION_MAP_PATH BPF_PATH "map_netd_configuration_map" -#define UID_OWNER_MAP_PATH BPF_PATH "map_netd_uid_owner_map" -#define UID_PERMISSION_MAP_PATH BPF_PATH "map_netd_uid_permission_map" +#define COOKIE_TAG_MAP_PATH BPF_NETD_PATH "map_netd_cookie_tag_map" +#define UID_COUNTERSET_MAP_PATH BPF_NETD_PATH "map_netd_uid_counterset_map" +#define APP_UID_STATS_MAP_PATH BPF_NETD_PATH "map_netd_app_uid_stats_map" +#define STATS_MAP_A_PATH BPF_NETD_PATH "map_netd_stats_map_A" +#define STATS_MAP_B_PATH BPF_NETD_PATH "map_netd_stats_map_B" +#define IFACE_INDEX_NAME_MAP_PATH BPF_NETD_PATH "map_netd_iface_index_name_map" +#define IFACE_STATS_MAP_PATH BPF_NETD_PATH "map_netd_iface_stats_map" +#define CONFIGURATION_MAP_PATH BPF_NETD_PATH "map_netd_configuration_map" +#define UID_OWNER_MAP_PATH BPF_NETD_PATH "map_netd_uid_owner_map" +#define UID_PERMISSION_MAP_PATH BPF_NETD_PATH "map_netd_uid_permission_map" enum UidOwnerMatchType { NO_MATCH = 0, @@ -163,13 +163,15 @@ STRUCT_SIZE(UidOwnerValue, 2 * 4); // 8 #define UID_RULES_CONFIGURATION_KEY 1 #define CURRENT_STATS_MAP_CONFIGURATION_KEY 2 +#define BPF_CLATD_PATH "/sys/fs/bpf/net_shared/" + #define CLAT_INGRESS6_PROG_RAWIP_NAME "prog_clatd_schedcls_ingress6_clat_rawip" #define CLAT_INGRESS6_PROG_ETHER_NAME "prog_clatd_schedcls_ingress6_clat_ether" -#define CLAT_INGRESS6_PROG_RAWIP_PATH BPF_PATH CLAT_INGRESS6_PROG_RAWIP_NAME -#define CLAT_INGRESS6_PROG_ETHER_PATH BPF_PATH CLAT_INGRESS6_PROG_ETHER_NAME +#define CLAT_INGRESS6_PROG_RAWIP_PATH BPF_CLATD_PATH CLAT_INGRESS6_PROG_RAWIP_NAME +#define CLAT_INGRESS6_PROG_ETHER_PATH BPF_CLATD_PATH CLAT_INGRESS6_PROG_ETHER_NAME -#define CLAT_INGRESS6_MAP_PATH BPF_PATH "map_clatd_clat_ingress6_map" +#define CLAT_INGRESS6_MAP_PATH BPF_CLATD_PATH "map_clatd_clat_ingress6_map" typedef struct { uint32_t iif; // The input interface index @@ -187,10 +189,10 @@ STRUCT_SIZE(ClatIngress6Value, 4 + 4); // 8 #define CLAT_EGRESS4_PROG_RAWIP_NAME "prog_clatd_schedcls_egress4_clat_rawip" #define CLAT_EGRESS4_PROG_ETHER_NAME "prog_clatd_schedcls_egress4_clat_ether" -#define CLAT_EGRESS4_PROG_RAWIP_PATH BPF_PATH CLAT_EGRESS4_PROG_RAWIP_NAME -#define CLAT_EGRESS4_PROG_ETHER_PATH BPF_PATH CLAT_EGRESS4_PROG_ETHER_NAME +#define CLAT_EGRESS4_PROG_RAWIP_PATH BPF_CLATD_PATH CLAT_EGRESS4_PROG_RAWIP_NAME +#define CLAT_EGRESS4_PROG_ETHER_PATH BPF_CLATD_PATH CLAT_EGRESS4_PROG_ETHER_NAME -#define CLAT_EGRESS4_MAP_PATH BPF_PATH "map_clatd_clat_egress4_map" +#define CLAT_EGRESS4_MAP_PATH BPF_CLATD_PATH "map_clatd_clat_egress4_map" typedef struct { uint32_t iif; // The input interface index diff --git a/service-t/src/com/android/server/net/BpfInterfaceMapUpdater.java b/service-t/src/com/android/server/net/BpfInterfaceMapUpdater.java index 5011dec06e..3b44d8143b 100644 --- a/service-t/src/com/android/server/net/BpfInterfaceMapUpdater.java +++ b/service-t/src/com/android/server/net/BpfInterfaceMapUpdater.java @@ -38,7 +38,7 @@ public class BpfInterfaceMapUpdater { private static final String TAG = BpfInterfaceMapUpdater.class.getSimpleName(); // This is current path but may be changed soon. private static final String IFACE_INDEX_NAME_MAP_PATH = - "/sys/fs/bpf/net_shared/map_netd_iface_index_name_map"; + "/sys/fs/bpf/netd_shared/map_netd_iface_index_name_map"; private final IBpfMap mBpfMap; private final INetd mNetd; private final Handler mHandler; diff --git a/service-t/src/com/android/server/net/NetworkStatsService.java b/service-t/src/com/android/server/net/NetworkStatsService.java index b2d8b5e410..a015177bc9 100644 --- a/service-t/src/com/android/server/net/NetworkStatsService.java +++ b/service-t/src/com/android/server/net/NetworkStatsService.java @@ -222,15 +222,15 @@ public class NetworkStatsService extends INetworkStatsService.Stub { "netstats_combine_subtype_enabled"; private static final String UID_COUNTERSET_MAP_PATH = - "/sys/fs/bpf/net_shared/map_netd_uid_counterset_map"; + "/sys/fs/bpf/netd_shared/map_netd_uid_counterset_map"; private static final String COOKIE_TAG_MAP_PATH = - "/sys/fs/bpf/net_shared/map_netd_cookie_tag_map"; + "/sys/fs/bpf/netd_shared/map_netd_cookie_tag_map"; private static final String APP_UID_STATS_MAP_PATH = - "/sys/fs/bpf/net_shared/map_netd_app_uid_stats_map"; + "/sys/fs/bpf/netd_shared/map_netd_app_uid_stats_map"; private static final String STATS_MAP_A_PATH = - "/sys/fs/bpf/net_shared/map_netd_stats_map_A"; + "/sys/fs/bpf/netd_shared/map_netd_stats_map_A"; private static final String STATS_MAP_B_PATH = - "/sys/fs/bpf/net_shared/map_netd_stats_map_B"; + "/sys/fs/bpf/netd_shared/map_netd_stats_map_B"; private final Context mContext; private final NetworkStatsFactory mStatsFactory; diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index fb0a48d50e..f024905701 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -748,7 +748,7 @@ public class ConnectivityService extends IConnectivityManager.Stub * The BPF program attached to the tc-police hook to account for to-be-dropped traffic. */ private static final String TC_POLICE_BPF_PROG_PATH = - "/sys/fs/bpf/net_shared/prog_netd_schedact_ingress_account"; + "/sys/fs/bpf/netd_shared/prog_netd_schedact_ingress_account"; private static String eventName(int what) { return sMagicDecoderRing.get(what, Integer.toString(what)); diff --git a/tests/mts/bpf_existence_test.cpp b/tests/mts/bpf_existence_test.cpp index 25694d7450..7efc2b1a0d 100644 --- a/tests/mts/bpf_existence_test.cpp +++ b/tests/mts/bpf_existence_test.cpp @@ -42,7 +42,9 @@ using android::modules::sdklevel::IsAtLeastT; #define PLATFORM "/sys/fs/bpf/" #define TETHERING "/sys/fs/bpf/tethering/" +#define PRIVATE "/sys/fs/bpf/net_private/" #define SHARED "/sys/fs/bpf/net_shared/" +#define NETD "/sys/fs/bpf/netd_shared/" class BpfExistenceTest : public ::testing::Test { }; @@ -95,16 +97,16 @@ static const set INTRODUCED_T = { SHARED "map_dscp_policy_ipv6_socket_to_policies_map_A", SHARED "map_dscp_policy_ipv6_socket_to_policies_map_B", SHARED "map_dscp_policy_switch_comp_map", - SHARED "map_netd_app_uid_stats_map", - SHARED "map_netd_configuration_map", - SHARED "map_netd_cookie_tag_map", - SHARED "map_netd_iface_index_name_map", - SHARED "map_netd_iface_stats_map", - SHARED "map_netd_stats_map_A", - SHARED "map_netd_stats_map_B", - SHARED "map_netd_uid_counterset_map", - SHARED "map_netd_uid_owner_map", - SHARED "map_netd_uid_permission_map", + NETD "map_netd_app_uid_stats_map", + NETD "map_netd_configuration_map", + NETD "map_netd_cookie_tag_map", + NETD "map_netd_iface_index_name_map", + NETD "map_netd_iface_stats_map", + NETD "map_netd_stats_map_A", + NETD "map_netd_stats_map_B", + NETD "map_netd_uid_counterset_map", + NETD "map_netd_uid_owner_map", + NETD "map_netd_uid_permission_map", SHARED "prog_block_bind4_block_port", SHARED "prog_block_bind6_block_port", SHARED "prog_clatd_schedcls_egress4_clat_ether", @@ -113,14 +115,14 @@ static const set INTRODUCED_T = { SHARED "prog_clatd_schedcls_ingress6_clat_rawip", SHARED "prog_dscp_policy_schedcls_set_dscp_ether", SHARED "prog_dscp_policy_schedcls_set_dscp_raw_ip", - SHARED "prog_netd_cgroupskb_egress_stats", - SHARED "prog_netd_cgroupskb_ingress_stats", - SHARED "prog_netd_cgroupsock_inet_create", - SHARED "prog_netd_schedact_ingress_account", - SHARED "prog_netd_skfilter_allowlist_xtbpf", - SHARED "prog_netd_skfilter_denylist_xtbpf", - SHARED "prog_netd_skfilter_egress_xtbpf", - SHARED "prog_netd_skfilter_ingress_xtbpf", + NETD "prog_netd_cgroupskb_egress_stats", + NETD "prog_netd_cgroupskb_ingress_stats", + NETD "prog_netd_cgroupsock_inet_create", + NETD "prog_netd_schedact_ingress_account", + NETD "prog_netd_skfilter_allowlist_xtbpf", + NETD "prog_netd_skfilter_denylist_xtbpf", + NETD "prog_netd_skfilter_egress_xtbpf", + NETD "prog_netd_skfilter_ingress_xtbpf", }; static const set REMOVED_T = {