IP_CT_DIR_ORIGINAL
#define NF_CT_ZONE_DIR_ORIG (1 << IP_CT_DIR_ORIGINAL)
return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num;
return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum;
FLOW_OFFLOAD_DIR_ORIGINAL = IP_CT_DIR_ORIGINAL,
CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL &&
#define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
if (exp->dir == IP_CT_DIR_ORIGINAL) {
expect_orig->dir = IP_CT_DIR_ORIGINAL;
if (exp->dir == IP_CT_DIR_ORIGINAL) {
if (dir == IP_CT_DIR_ORIGINAL) {
if (udph->dest == htons(SNMP_TRAP_PORT) && dir != IP_CT_DIR_ORIGINAL)
daddr = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip;
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.tcp.port :
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.udp.port;
daddr = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.in6;
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.tcp.port :
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.udp.port;
orig = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
.dst = { .protonum = cp->protocol, .dir = IP_CT_DIR_ORIGINAL } };
if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
*tuple = found_ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
nf_ct_zone_id(&conn->zone, IP_CT_DIR_ORIGINAL) ==
nf_ct_zone_id(zone, IP_CT_DIR_ORIGINAL))
nf_ct_zone_equal(found_ct, zone, IP_CT_DIR_ORIGINAL)) {
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)
IP_CT_DIR_ORIGINAL, &otuple);
IP_CT_DIR_ORIGINAL, &tuple);
if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
exp->master_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
id2 = nf_ct_zone_id(nf_ct_zone(ct2), IP_CT_DIR_ORIGINAL);
hlist_nulls_add_fake(&loser_ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
if (CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
if (nf_ct_tuple_equal(&ignored_conntrack->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple) &&
nf_ct_zone_equal(ct, zone, IP_CT_DIR_ORIGINAL))
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple = *orig;
ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode.pprev = NULL;
return &ct->tuplehash[IP_CT_DIR_ORIGINAL];
zone_id = nf_ct_zone_id(zone, IP_CT_DIR_ORIGINAL);
if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL)
tuple->dst.dir = IP_CT_DIR_ORIGINAL;
d = (unsigned long)siphash(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
sizeof(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple),
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
nf_ct_zone_id(nf_ct_zone(ct), IP_CT_DIR_ORIGINAL));
hlist_nulls_add_head_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode,
return nf_ct_tuple_equal(&ct1->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
&ct2->tuplehash[IP_CT_DIR_ORIGINAL].tuple) &&
nf_ct_zone_equal(ct1, nf_ct_zone(ct2), IP_CT_DIR_ORIGINAL) &&
unsigned int rid, zone_id = nf_ct_zone_id(zone, IP_CT_DIR_ORIGINAL);
hlist_nulls_add_head_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode,
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
nf_ct_zone_id(nf_ct_zone(ct), IP_CT_DIR_ORIGINAL));
if (nf_ct_key_equal(h, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
if (!nf_ct_tuple_equal(&ct1->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
&ct2->tuplehash[IP_CT_DIR_ORIGINAL].tuple))
id1 = nf_ct_zone_id(nf_ct_zone(ct1), IP_CT_DIR_ORIGINAL);
hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
exp->master_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
ftp->flags[IP_CT_DIR_ORIGINAL] |= NF_CT_FTP_SEQ_PICKUP;
[IP_CT_DIR_ORIGINAL] = {
tuple = nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL);
if (NF_CT_DIRECTION(h) != IP_CT_DIR_ORIGINAL)
tuple->dst.dir = IP_CT_DIR_ORIGINAL;
ret = change_seq_adj(&seqadj->seq[IP_CT_DIR_ORIGINAL],
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
if (dump_counters(skb, acct, IP_CT_DIR_ORIGINAL, type) < 0)
exp->master_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
#define master_tuple(ct) &(ct->master->tuplehash[IP_CT_DIR_ORIGINAL].tuple)
seq = &seqadj->seq[IP_CT_DIR_ORIGINAL];
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
if (ctnetlink_dump_tuples(skb, nf_ct_tuple(ct, IP_CT_DIR_ORIGINAL)) < 0)
dir = IP_CT_DIR_ORIGINAL;
if (dir == IP_CT_DIR_ORIGINAL)
sin.sin_port = ct->tuplehash[IP_CT_DIR_ORIGINAL]
sin.sin_addr.s_addr = ct->tuplehash[IP_CT_DIR_ORIGINAL]
sin6.sin6_port = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u.tcp.port;
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3.in6,
km_orig = ct_pptp_info->keymap[IP_CT_DIR_ORIGINAL];
if (ct_pptp_info->keymap[IP_CT_DIR_ORIGINAL] ||
ct_pptp_info->keymap[IP_CT_DIR_ORIGINAL] = km_orig;
for (dir = IP_CT_DIR_ORIGINAL; dir < IP_CT_DIR_MAX; dir++) {
memcpy(&t, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, sizeof(t));
new_state = sctp_new_state(IP_CT_DIR_ORIGINAL,
ct->proto.sctp.vtag[IP_CT_DIR_ORIGINAL] = sh->vtag;
ct->proto.sctp.vtag[IP_CT_DIR_ORIGINAL]) ||
ct->proto.sctp.vtag[IP_CT_DIR_ORIGINAL] =
if (index == TCP_SYN_SET && dir == IP_CT_DIR_ORIGINAL) {
index == TCP_ACK_SET && dir == IP_CT_DIR_ORIGINAL &&
ct->proto.tcp.last_dir == IP_CT_DIR_ORIGINAL &&
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
if (dir == IP_CT_DIR_ORIGINAL) {
print_tuple(s, &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
seq_print_acct(s, ct, IP_CT_DIR_ORIGINAL);
nf_ct_dump_tuple(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
exp->dir = IP_CT_DIR_ORIGINAL;
if (dir == IP_CT_DIR_ORIGINAL)
if (nf_ct_tuple_equal(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
if (thash->tuple.dst.dir == IP_CT_DIR_ORIGINAL)
t = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
nf_ct_zone_equal(ct, zone, IP_CT_DIR_ORIGINAL)) {
&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
h = hash_by_src(nf_ct_net(ct), nf_ct_zone(ct), &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple);
if (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip == 0)
} else if (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) {
if (dir != IP_CT_DIR_ORIGINAL)
pair_exp->tuple.dst.protonum == ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum &&
nf_inet_addr_cmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3, &pair_exp->saved_addr) &&
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.all == pair_exp->saved_proto.all) {
nf_inet_addr_cmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3,
= ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u.udp.port;
if (th->rst && CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL) {
CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) {
nth->window = htons(state->seen[IP_CT_DIR_ORIGINAL].td_maxwin);
if (th->rst && CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL) {
CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL)
CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) {
nth->window = htons(state->seen[IP_CT_DIR_ORIGINAL].td_maxwin);
case IP_CT_DIR_ORIGINAL:
return nft_ct_get_eval_counter(c, k, IP_CT_DIR_ORIGINAL) +
case IP_CT_DIR_ORIGINAL:
case IP_CT_DIR_ORIGINAL:
switch (ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum) {
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
otuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
return (__force u32)ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip;
return (__force u32 *)ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3.ip6;
what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
what = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes);
pkts = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets);
bytes = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].bytes) +
pkts = atomic64_read(&counters[IP_CT_DIR_ORIGINAL].packets) +
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
(CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) ^
return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3,
return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3,
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
orig = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
if (info->force && CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL) {
entry->ct_metadata.orig_dir = dir == IP_CT_DIR_ORIGINAL;
dir = IP_CT_DIR_ORIGINAL;
tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple;
CTINFO2DIR(ctinfo) != IP_CT_DIR_ORIGINAL) {
#define NF_CT_ZONE_DIR_ORIG (1 << IP_CT_DIR_ORIGINAL)