From 30020a513aeeb5eeb773ae39672acc0029ada41c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Fri, 21 Mar 2025 12:36:45 -0700 Subject: [PATCH] clatd: fix endianness of multicast drop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a *critical* fix for http://go/aog/3514294 'Drop egress multicast on clat interface' Bug: 404457155 Test: TreeHugger Signed-off-by: Maciej Żenczykowski Change-Id: If14ef730f78c7e991842a678260dd20df607b1ec --- bpf/progs/clatd.c | 2 +- clatd/ipv4.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bpf/progs/clatd.c b/bpf/progs/clatd.c index 2bb9d6f203..f4e4f3bb99 100644 --- a/bpf/progs/clatd.c +++ b/bpf/progs/clatd.c @@ -289,7 +289,7 @@ DEFINE_BPF_PROG("schedcls/egress4/clat_rawip", AID_ROOT, AID_SYSTEM, sched_cls_e if (ip4->ihl != 5) return TC_ACT_PIPE; // Packet must not be multicast - if ((ip4->daddr & 0xf0000000) == 0xe0000000) return TC_ACT_PIPE; + if ((ip4->daddr & htonl(0xf0000000)) == htonl(0xe0000000)) return TC_ACT_PIPE; // Calculate the IPv4 one's complement checksum of the IPv4 header. __wsum sum4 = 0; diff --git a/clatd/ipv4.c b/clatd/ipv4.c index 81bf87bd36..d7ac0d12a7 100644 --- a/clatd/ipv4.c +++ b/clatd/ipv4.c @@ -85,8 +85,8 @@ int ipv4_packet(clat_packet out, clat_packet_index pos, const uint8_t *packet, s return 0; } - if ((header->daddr & 0xf0000000) == 0xe0000000) { - logmsg_dbg(ANDROID_LOG_INFO, "ip_packet/daddr is multicast: %x", header->daddr); + if ((header->daddr & htonl(0xf0000000)) == htonl(0xe0000000)) { + logmsg_dbg(ANDROID_LOG_INFO, "ip_packet/daddr is multicast: %x", ntohl(header->daddr)); return 0; }