diff options
author | Maciej Żenczykowski <maze@google.com> | 2023-03-15 00:59:29 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-15 00:59:29 +0000 |
commit | 720ac8f0991934bc4cf7d3d6abd7e9beffd00ac0 (patch) | |
tree | 002567566a4b11c3630baeb1ade674cc126fd6e3 | |
parent | 28be95108a520276312ad8819d1a22201d7fa727 (diff) | |
parent | 53c15f7b5a0d8fcd62955aab31b09a4a482b80ec (diff) | |
download | android-clat-720ac8f0991934bc4cf7d3d6abd7e9beffd00ac0.tar.gz |
Merge "clatd: use struct instead of direct u8[] for buffer" am: b13f6a4f50 am: 53c15f7b5a
Original change: https://android-review.googlesource.com/c/platform/external/android-clat/+/2485119
Change-Id: I21210398f1e88c3cad97415889a4231c4097abf7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | clatd.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -77,14 +77,17 @@ int ipv6_address_changed(const char *interface) { } } -// reads L3 IPv6 packet from AF_PACKET socket, translates to IPv4, writes to tun +// reads IPv6 packet from AF_PACKET socket, translates to IPv4, writes to tun void process_packet_6_to_4(struct tun_data *tunnel) { // ethernet header is 14 bytes, plus 4 for a normal VLAN tag or 8 for Q-in-Q // we don't really support vlans (or especially Q-in-Q)... // but a few bytes of extra buffer space doesn't hurt... - uint8_t buf[22 + MAXMTU + 1]; // +1 to make packet truncation obvious + struct { + uint8_t payload[22 + MAXMTU]; + char pad; // +1 to make packet truncation obvious + } buf; struct iovec iov = { - .iov_base = buf, + .iov_base = &buf, .iov_len = sizeof(buf), }; char cmsg_buf[CMSG_SPACE(sizeof(struct tpacket_auxdata))]; @@ -137,7 +140,7 @@ void process_packet_6_to_4(struct tun_data *tunnel) { } } - translate_packet(tunnel->fd4, 0 /* to_ipv6 */, buf + tp_net, readlen - tp_net); + translate_packet(tunnel->fd4, 0 /* to_ipv6 */, buf.payload + tp_net, readlen - tp_net); } // reads TUN_PI + L3 IPv4 packet from tun, translates to IPv6, writes to AF_INET6/RAW socket |