clat: use AF_PACKET/SOCK_RAW not SOCK_DGRAM sockets
This switches incoming packets from L3 to L2, ie. they now include the ethernet header for non-rawip cases (like wifi) Note: depends on userspace clatd change to offset packet processing index by tpacket_auxdata->tp_net L3 header offset, an increase in the read buffer size, and on change to use IPv6 header relative cBPF for ingress packet filtering! Test: TreeHugger, atest libclat_test, ping 1.1.1.1 on v6-only wifi Bug: 265591307 Signed-off-by: Maciej Żenczykowski <maze@google.com> Change-Id: Ie5893d18b0dd796751f95150680a0d4cd5f64c3c
This commit is contained in:
parent
9fd65dc81a
commit
2460294974
2 changed files with 2 additions and 2 deletions
|
|
@ -177,7 +177,7 @@ static jint com_android_server_connectivity_ClatCoordinator_openPacketSocket(JNI
|
|||
jobject clazz) {
|
||||
// Will eventually be bound to htons(ETH_P_IPV6) protocol,
|
||||
// but only after appropriate bpf filter is attached.
|
||||
int sock = socket(AF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
|
||||
const int sock = socket(AF_PACKET, SOCK_RAW | SOCK_CLOEXEC, 0);
|
||||
if (sock < 0) {
|
||||
throwIOException(env, "packet socket failed", errno);
|
||||
return -1;
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ TEST_F(ClatUtils, ConfigurePacketSocket) {
|
|||
TunInterface v6Iface;
|
||||
ASSERT_EQ(0, v6Iface.init());
|
||||
|
||||
int s = socket(AF_PACKET, SOCK_DGRAM | SOCK_CLOEXEC, htons(ETH_P_IPV6));
|
||||
const int s = socket(AF_PACKET, SOCK_RAW | SOCK_CLOEXEC, htons(ETH_P_IPV6));
|
||||
EXPECT_LE(0, s);
|
||||
struct in6_addr addr6;
|
||||
EXPECT_EQ(1, inet_pton(AF_INET6, "2001:db8::f00", &addr6));
|
||||
|
|
|
|||
Loading…
Reference in a new issue