diff --git a/bpf_progs/dscpPolicy.c b/bpf_progs/dscpPolicy.c index 36a2d5b0ff..e55f473df1 100644 --- a/bpf_progs/dscpPolicy.c +++ b/bpf_progs/dscpPolicy.c @@ -37,8 +37,7 @@ #define IP4_OFFSET(field, header) (header + offsetof(struct iphdr, field)) #define UPDATE_TOS(dscp, tos) (dscp << 2) | (tos & ECN_MASK) -DEFINE_BPF_MAP_GRW(ipv4_socket_to_policies_map, HASH, uint64_t, RuleEntry, MAX_POLICIES, AID_SYSTEM) -DEFINE_BPF_MAP_GRW(ipv6_socket_to_policies_map, HASH, uint64_t, RuleEntry, MAX_POLICIES, AID_SYSTEM) +DEFINE_BPF_MAP_GRW(socket_policy_cache_map, HASH, uint64_t, RuleEntry, CACHE_MAP_SIZE, AID_SYSTEM) DEFINE_BPF_MAP_GRW(ipv4_dscp_policies_map, ARRAY, uint32_t, DscpPolicy, MAX_POLICIES, AID_SYSTEM) DEFINE_BPF_MAP_GRW(ipv6_dscp_policies_map, ARRAY, uint32_t, DscpPolicy, MAX_POLICIES, AID_SYSTEM) @@ -120,12 +119,7 @@ static inline __always_inline void match_policy(struct __sk_buff* skb, bool ipv4 return; } - RuleEntry* existing_rule; - if (ipv4) { - existing_rule = bpf_ipv4_socket_to_policies_map_lookup_elem(&cookie); - } else { - existing_rule = bpf_ipv6_socket_to_policies_map_lookup_elem(&cookie); - } + RuleEntry* existing_rule = bpf_socket_policy_cache_map_lookup_elem(&cookie); if (existing_rule && v6_equal(src_ip, existing_rule->src_ip) && v6_equal(dst_ip, existing_rule->dst_ip) && skb->ifindex == existing_rule->ifindex && @@ -226,11 +220,7 @@ static inline __always_inline void match_policy(struct __sk_buff* skb, bool ipv4 }; // Update map with new policy. - if (ipv4) { - bpf_ipv4_socket_to_policies_map_update_elem(&cookie, &value, BPF_ANY); - } else { - bpf_ipv6_socket_to_policies_map_update_elem(&cookie, &value, BPF_ANY); - } + bpf_socket_policy_cache_map_update_elem(&cookie, &value, BPF_ANY); // Need to store bytes after updating map or program will not load. if (ipv4) { diff --git a/bpf_progs/dscpPolicy.h b/bpf_progs/dscpPolicy.h index 1d8964a5f2..8968668c83 100644 --- a/bpf_progs/dscpPolicy.h +++ b/bpf_progs/dscpPolicy.h @@ -14,6 +14,7 @@ * limitations under the License. */ +#define CACHE_MAP_SIZE 1024 #define MAX_POLICIES 16 #define SRC_IP_MASK_FLAG 1 diff --git a/tests/mts/bpf_existence_test.cpp b/tests/mts/bpf_existence_test.cpp index 95eebb1c0c..c7e8b97d9c 100644 --- a/tests/mts/bpf_existence_test.cpp +++ b/tests/mts/bpf_existence_test.cpp @@ -88,9 +88,8 @@ static const set MAINLINE_FOR_T_PLUS = { SHARED "map_clatd_clat_egress4_map", SHARED "map_clatd_clat_ingress6_map", SHARED "map_dscpPolicy_ipv4_dscp_policies_map", - SHARED "map_dscpPolicy_ipv4_socket_to_policies_map", SHARED "map_dscpPolicy_ipv6_dscp_policies_map", - SHARED "map_dscpPolicy_ipv6_socket_to_policies_map", + SHARED "map_dscpPolicy_socket_policy_cache_map", NETD "map_netd_app_uid_stats_map", NETD "map_netd_configuration_map", NETD "map_netd_cookie_tag_map",