refactor: TetherIngress becomes TetherDownstream6 (and friends)
Generated via:
#!/bin/bash
do_replace() {
pushd "$1" >/dev/null
shift
git grep "$1" | cut -d: -f1 | sort -u | while read f; do
sed -i -r "s@$1@$2@g" "${f}"
git add "${f}"
done
popd >/dev/null
}
replace() {
do_replace packages/modules/Connectivity/Tethering "$@"
do_replace system/netd "$@"
}
do_reset() {
pushd "$1" >/dev/null
git rhh
popd >/dev/null
}
main() {
do_reset packages/modules/Connectivity/Tethering
do_reset system/netd
replace TetherIngressKey TetherDownstream6Key
replace TetherIngressValue TetherDownstream6Value
pushd packages/modules/Connectivity/Tethering/src/com/android/networkstack/tethering >/dev/null
git mv TetherIngressKey.java TetherDownstream6Key.java
git mv TetherIngressValue.java TetherDownstream6Value.java
popd >/dev/null
replace TETHER_INGRESS_PROG TETHER_DOWNSTREAM6_TC_PROG
replace ingress_tether tether_downstream6
replace ingress/tether_ tether_downstream6_
replace TETHER_INGRESS_MAP TETHER_DOWNSTREAM6_MAP
replace tether_ingress_map tether_downstream6_map
replace getTetherIngressMapFd getTetherDownstream6MapFd
replace getTetherIngressProgFd getTetherDownstream6TcProgFd
replace mBpfIngressMap mBpfDownstream6Map
replace bpfIngressMap bpfDownstream6Map
replace printIngressMap printDownstream6Map
replace 'BPF ingress map' 'BPF downstream ipv6 map'
}
main "$@"; exit
Followed by:
cd system/netd
# change regexp in tests/binder_test.cpp:3374
git add tests/binder_test.cpp
(and whitespace adjustments to prevent lines from going over 100 characters)
Afterwards we have:
$ adbz shell ls /sys/fs/bpf/tethering
map_offload_tether_downstream6_map
map_offload_tether_limit_map
map_offload_tether_stats_map
map_test_tether_downstream6_map
prog_offload_schedcls_tether_downstream6_ether
prog_offload_schedcls_tether_downstream6_rawip
prog_test_xdp_drop_ipv4_udp_ether
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ib04dc0c6e3d034461f3f84e09f6fa93a862e1bb2
diff --git a/Tethering/bpf_progs/offload.c b/Tethering/bpf_progs/offload.c
index c66bb5c..cb1c0e5 100644
--- a/Tethering/bpf_progs/offload.c
+++ b/Tethering/bpf_progs/offload.c
@@ -24,7 +24,7 @@
#include "bpf_net_helpers.h"
#include "netdbpf/bpf_shared.h"
-DEFINE_BPF_MAP_GRW(tether_ingress_map, HASH, TetherIngressKey, TetherIngressValue, 64,
+DEFINE_BPF_MAP_GRW(tether_downstream6_map, HASH, TetherDownstream6Key, TetherDownstream6Value, 64,
AID_NETWORK_STACK)
// Tethering stats, indexed by upstream interface.
@@ -63,12 +63,12 @@
(src32 & htonl(0xe0000000)) != htonl(0x20000000)) // 2000::/3 Global Unicast
return TC_ACT_OK;
- TetherIngressKey k = {
+ TetherDownstream6Key k = {
.iif = skb->ifindex,
.neigh6 = ip6->daddr,
};
- TetherIngressValue* v = bpf_tether_ingress_map_lookup_elem(&k);
+ TetherDownstream6Value* v = bpf_tether_downstream6_map_lookup_elem(&k);
// If we don't find any offload information then simply let the core stack handle it...
if (!v) return TC_ACT_OK;
@@ -162,8 +162,8 @@
return bpf_redirect(v->oif, 0 /* this is effectively BPF_F_EGRESS */);
}
-DEFINE_BPF_PROG("schedcls/ingress/tether_ether", AID_ROOT, AID_ROOT,
- sched_cls_ingress_tether_ether)
+DEFINE_BPF_PROG("schedcls/tether_downstream6_ether", AID_ROOT, AID_ROOT,
+ sched_cls_tether_downstream6_ether)
(struct __sk_buff* skb) {
return do_forward(skb, true);
}
@@ -181,15 +181,15 @@
// and thus a 5.4 kernel always supports this.
//
// Hence, this mandatory (must load successfully) implementation for 5.4+ kernels:
-DEFINE_BPF_PROG_KVER("schedcls/ingress/tether_rawip$5_4", AID_ROOT, AID_ROOT,
- sched_cls_ingress_tether_rawip_5_4, KVER(5, 4, 0))
+DEFINE_BPF_PROG_KVER("schedcls/tether_downstream6_rawip$5_4", AID_ROOT, AID_ROOT,
+ sched_cls_tether_downstream6_rawip_5_4, KVER(5, 4, 0))
(struct __sk_buff* skb) {
return do_forward(skb, false);
}
// and this identical optional (may fail to load) implementation for [4.14..5.4) patched kernels:
-DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$4_14", AID_ROOT, AID_ROOT,
- sched_cls_ingress_tether_rawip_4_14, KVER(4, 14, 0),
+DEFINE_OPTIONAL_BPF_PROG_KVER_RANGE("schedcls/tether_downstream6_rawip$4_14", AID_ROOT, AID_ROOT,
+ sched_cls_tether_downstream6_rawip_4_14, KVER(4, 14, 0),
KVER(5, 4, 0))
(struct __sk_buff* skb) {
return do_forward(skb, false);
@@ -198,8 +198,8 @@
// and define a no-op stub for [4.9,4.14) and unpatched [4.14,5.4) kernels.
// (if the above real 4.14+ program loaded successfully, then bpfloader will have already pinned
// it at the same location this one would be pinned at and will thus skip loading this stub)
-DEFINE_BPF_PROG_KVER_RANGE("schedcls/ingress/tether_rawip$stub", AID_ROOT, AID_ROOT,
- sched_cls_ingress_tether_rawip_stub, KVER_NONE, KVER(5, 4, 0))
+DEFINE_BPF_PROG_KVER_RANGE("schedcls/tether_downstream6_rawip$stub", AID_ROOT, AID_ROOT,
+ sched_cls_tether_downstream6_rawip_stub, KVER_NONE, KVER(5, 4, 0))
(struct __sk_buff* skb) {
return TC_ACT_OK;
}
diff --git a/Tethering/bpf_progs/test.c b/Tethering/bpf_progs/test.c
index eeaaa62..4dd33e6 100644
--- a/Tethering/bpf_progs/test.c
+++ b/Tethering/bpf_progs/test.c
@@ -23,7 +23,7 @@
#include "netdbpf/bpf_shared.h"
// Used only by TetheringPrivilegedTests, not by production code.
-DEFINE_BPF_MAP_GRW(tether_ingress_map, HASH, TetherIngressKey, TetherIngressValue, 16,
+DEFINE_BPF_MAP_GRW(tether_downstream6_map, HASH, TetherDownstream6Key, TetherDownstream6Value, 16,
AID_NETWORK_STACK)
DEFINE_BPF_PROG_KVER("xdp/drop_ipv4_udp_ether", AID_ROOT, AID_ROOT,