[NFCT.TETHER.14] Clear the BPF maps in BpfCoordinator ctor
...
Needed while the system server has recovered from crash.
Test: atest TetheringCoverageTests
Change-Id: Idbed4887f5396537f0d0df97de8b482266dffbb7
Hungming Chen
commited 2021-03-09 16:11:22 +08:00
499d3cac73
Dump BPF offload rules for upstream IPv4 and IPv6.
...
Add code to BpfCoordinator to dump upstream IPv4 and IPv6 rules.
For IPv4, currently only the upstream map is printed, because the
downstream map is expected to be symmetrical.
Example output:
=============
21(21) -> 12(rmnet_data2) 86dd 00:00:00:00:00:00 00:00:00:00:00:00
[wlan1]: iif(iface) oif(iface) v6addr srcmac dstmac
12(rmnet_data2) 21(wlan1) /2001:240:2425:b5dc:21a9:995d:bc57:bc37 b2:b5:e0:24:21:c2 ca:06:8d:54:99:ad
[IPv4]: iif(iface) oif(iface) src nat dst
21(21) 12(rmnet_data2) 192.168.16.247:41544 -> 100.101.80.108:41544 -> 216.239.36.135:443
21(21) 12(rmnet_data2) 192.168.16.247:42028 -> 100.101.80.108:42028 -> 8.8.4.4:853
21(21) 12(rmnet_data2) 192.168.16.247:42032 -> 100.101.80.108:42032 -> 8.8.4.4:853
21(21) 12(rmnet_data2) 192.168.16.247:42042 -> 100.101.80.108:42042 -> 8.8.4.4:853
21(21) 12(rmnet_data2) 192.168.16.247:41816 -> 100.101.80.108:41816 -> 8.8.8.8:853
21(21) 12(rmnet_data2) 192.168.16.247:42040 -> 100.101.80.108:42040 -> 8.8.4.4:853
=============
Also make it possible to do "dumpsys tethering bpf" and get only
the BPF dump.
Test: manual
Change-Id: I2aaa2fdda7d724994090c26feff585f24cd3283b
Lorenzo Colitti
commited 2021-01-27 14:30:51 +09:00
61976f278f
fix comments
...
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic217e08484c39077bcc408195daa3311ed93ad28
Maciej Żenczykowski
commited 2021-01-26 16:45:21 -08:00
cff64c8561
Program the upstream IPv6 map in BpfCoordinator.
...
- Add methods to start and stop IPv6 forwarding upstream
- Populate the upstream IPv6 map when the first rule for any
upstream/downstream pair is created.
- Clear the upstream IPv6 map when the last rule for any
upstream/downstream pair is deleted.
Test: Added coverage to IpServerTest and BpfCoordinatorTest
Change-Id: Ib041081e95f5f449489ab63138de034222ffac8f
Lorenzo Colitti
commited 2021-01-27 00:52:09 +09:00
5b1ed508cf
Rename TetherDownstream6Value to Tether6Value.
...
The two value types are identical so there is no need to have
separate classes for them.
Test: atest TetheringTests
Change-Id: Ia622b082d0a44373d21f51222f5e675e5bde08e0
Lorenzo Colitti
commited 2021-01-27 00:52:09 +09:00
d69a886235
merge Tether{Down,Up}stream4{Key,Value} - part 3 - fixups
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ia7840698e80ded33d8e0b59efe1ca7267254b892
Maciej Żenczykowski
commited 2021-01-25 20:32:10 -08:00
911a7267f5
merge Tether{Down,Up}stream4{Key,Value} - part 2 - java
...
Generated via:
git grep 'Tether(Down|Up)stream4(Key|Value)' | cut -d: -f1 | sort -u | while read i; do
sed -r -i 's@TetherUpstream4Value@Tether4Value@g' "$i"
sed -r -i 's@TetherDownstream4Value@Tether4Value@g' "$i"
sed -r -i 's@TetherDownstream4Key@Tether4Key@g' "$i"
sed -r -i 's@TetherUpstream4Key@Tether4Key@g' "$i"
done
cd Tethering/src/com/android/networkstack/tethering
git mv TetherUpstream4Key.java Tether4Key.java
git mv TetherUpstream4Value.java Tether4Value.java
git diff TetherDownstream4Key.java Tether4Key.java
git diff TetherDownstream4Value.java Tether4Value.java
git rm TetherDownstream4Key.java
git rm TetherDownstream4Value.java
Fixup resulting 'import' duplication
mcedit Tethering/apishim/31/com/android/networkstack/tethering/apishim/api31/BpfCoordinatorShimImpl.java
mcedit Tethering/apishim/30/com/android/networkstack/tethering/apishim/api30/BpfCoordinatorShimImpl.java
mcedit Tethering/apishim/common/com/android/networkstack/tethering/apishim/common/BpfCoordinatorShim.java
mcedit Tethering/tests/unit/src/android/net/ip/IpServerTest.java
Test: N/A, requires follow up commit
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I1dfc3108ca4bbd0cefc3420bc7e421594b62619c
Maciej Żenczykowski
commited 2021-01-25 20:32:05 -08:00
32874eb6bc
[NFCT.TETHER.10] Add/delete IPv4 offload BPF rules to/from BPF map
...
Access the IPv4 downstream and upstream BPF map with the built rules.
Test: atest TetheringCoverageTests
Change-Id: I8cd6e49b377c72250988019eea57f93cccd78309
Hungming Chen
commited 2021-01-25 20:13:47 +08:00
dd833dee31
refactor: continued
...
Test: builds, atest, TreeHugger
git grep 'makeIngressKey|makeIngressValue|BpfIngressMap|TETHER_INGRESS_FS_PATH'
no longer finds anything
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: I27200d33cbc4ea2094b18e05bf93ab54c564da0b
Maciej Żenczykowski
commited 2021-01-20 11:34:48 +00:00
a0e2c0445d
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
Maciej Żenczykowski
commited 2021-01-19 23:18:46 -08:00
770e0a7a8f
[NFCT.TETHER.6] Migrate tetherOffloadGetAndClearStats from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: Id87b88f6dfcdfe5765756442ed880933cd1c6baf
Hungming Chen
commited 2021-01-15 18:40:55 +08:00
6971e91d62
[NFCT.TETHER.5] Migrate tetherOffloadSetInterfaceQuota from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I67dfba750c7303e4aeaf65f5086db1290d176b4d
Hungming Chen
commited 2021-01-15 18:40:48 +08:00
67c14b549f
[NFCT.TETHER.4] Migrate tetherOffloadRuleRemove from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I969d6182a307f46c8ed0a30960deb460ecedd8ea
Hungming Chen
commited 2021-01-15 18:40:40 +08:00
5ea9c4b64a
[NFCT.TETHER.3] Migrate tetherOffloadGetStats from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: TetheringCoverageTests
Change-Id: Ie73f7b4d9b191e62cfdfe2cfa3360cc7210f17e8
Hungming Chen
commited 2021-01-15 17:11:12 +08:00
b350d7589f
[NFCT.TETHER.2] Migrate tetherOffloadRuleAdd from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I6f8667bf110dae3e2805c2752ff59e7284a7bce0
Hungming Chen
commited 2021-01-15 17:10:58 +08:00
dd55b91228