The expectation helpers (expect_h245, expect_rtp_rtcp, expect_t120, and expect_callforwarding) test whether NAT is required by comparing the forward source IP against the reverse destination IP: memcmp(&ct->tuplehash[dir].tuple.src.u3, &ct->tuplehash[!dir].tuple.dst.u3, sizeof(ct->tuplehash[dir].tuple.src.u3)) This check is broken for multiple reasons: 1. It incorrectly evaluates to 0 in the reply direction (dir == IP_CT_DIR_REPLY) even under SNAT, because tuplehash[REPLY].src and tuplehash[ORIGINAL].dst both represent the remote peer's address. 2. In Destination NAT (DNAT) and hairpin setups, the sender's source IP is never modified, causing this check to evaluate to false even though NAT payload rewriting is necessary. As a result, NAT payload mangling is bypassed, leaving internal addresses untranslated inside the signaling packets and leading to call setup and media stream failures. Remove the redundant memcmp() checks across all four expectation helpers. Verifying that nathook is present and that ct->status matches IPS_NAT_MASK is sufficient to determine whether NAT handling should execute. Fixes: f587de0e2feb ("[NETFILTER]: nf_conntrack/nf_nat: add H.323 helper port") Cc: stable@vger.kernel.org Signed-off-by: Subham Pal --- [Note: Raw patch attached to avoid webmail tab/whitespace corruption]