Lorenzo Colitti
61976f278f
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
2021-01-27 14:30:51 +09:00
Maciej Żenczykowski
cff64c8561
fix comments
...
Test: N/A
Signed-off-by: Maciej Żenczykowski <maze@google.com >
Change-Id: Ic217e08484c39077bcc408195daa3311ed93ad28
2021-01-26 16:45:21 -08:00
Lorenzo Colitti
5b1ed508cf
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
2021-01-27 00:52:09 +09:00
Lorenzo Colitti
d69a886235
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
2021-01-27 00:52:09 +09:00
Maciej Żenczykowski
911a7267f5
merge Tether{Down,Up}stream4{Key,Value} - part 3 - fixups
...
Test: atest, TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com >
Change-Id: Ia7840698e80ded33d8e0b59efe1ca7267254b892
2021-01-25 20:32:10 -08:00
Maciej Żenczykowski
32874eb6bc
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
2021-01-25 20:32:05 -08:00
Hungming Chen
dd833dee31
[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
2021-01-25 20:13:47 +08:00
Maciej Żenczykowski
a0e2c0445d
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
2021-01-20 11:34:48 +00:00
Maciej Żenczykowski
770e0a7a8f
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
2021-01-19 23:18:46 -08:00
Hungming Chen
6971e91d62
[NFCT.TETHER.6] Migrate tetherOffloadGetAndClearStats from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: Id87b88f6dfcdfe5765756442ed880933cd1c6baf
2021-01-15 18:40:55 +08:00
Hungming Chen
67c14b549f
[NFCT.TETHER.5] Migrate tetherOffloadSetInterfaceQuota from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I67dfba750c7303e4aeaf65f5086db1290d176b4d
2021-01-15 18:40:48 +08:00
Hungming Chen
5ea9c4b64a
[NFCT.TETHER.4] Migrate tetherOffloadRuleRemove from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I969d6182a307f46c8ed0a30960deb460ecedd8ea
2021-01-15 18:40:40 +08:00
Hungming Chen
b350d7589f
[NFCT.TETHER.3] Migrate tetherOffloadGetStats from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: TetheringCoverageTests
Change-Id: Ie73f7b4d9b191e62cfdfe2cfa3360cc7210f17e8
2021-01-15 17:11:12 +08:00
Hungming Chen
dd55b91228
[NFCT.TETHER.2] Migrate tetherOffloadRuleAdd from netd to mainline
...
A preparation for updating BPF map in mainline module.
Test: atest TetheringCoverageTests
Change-Id: I6f8667bf110dae3e2805c2752ff59e7284a7bce0
2021-01-15 17:10:58 +08:00