--- zzzz-none-000/linux-4.9.279/include/net/netfilter/nf_conntrack.h 2021-08-08 06:38:54.000000000 +0000 +++ puma7-atom-6591-750/linux-4.9.279/include/net/netfilter/nf_conntrack.h 2023-02-08 11:43:43.000000000 +0000 @@ -4,11 +4,16 @@ * extension. * * 16 Dec 2003: Yasuyuki Kozakai @USAGI - * - generalize L3 protocol dependent part. + * - generalize L3 protocol dependent part. * * Derived from include/linux/netfiter_ipv4/ip_conntrack.h */ +/* +* Includes MaxLinear's changes dated: 2021. +* Changed portions - Copyright 2021-2021, MaxLinear, Inc. +*/ + #ifndef _NF_CONNTRACK_H #define _NF_CONNTRACK_H @@ -23,27 +28,45 @@ #include #include #include - #include +#if defined(CONFIG_APPCPU_GW_PP_HANDLE) || defined(CONFIG_TI_PACKET_PROCESSOR) +/* Flag definitions that are carried in the PP status flag in the connection tracking + * * structure. */ + +/* Set the flag to indicate that the connection tacking timeout code should execute as + * * such and the entry will be deleted. */ +#define TI_PP_KILL_CONNTRACK 0x1 + +/* Set the flag to 1 indicates that all packets flowing through the box matching the + * * connection will have their BYPASS flag set. */ +#define TI_PP_BYPASS 0x2 + +/* Set the flag to 1 indicates that this conntrack connection is upstream */ +#define TI_PP_US_CONNECTION 0x4 + +/* Set the flag to 1 indicates that all packets flowing through the box matching the + * connection will have their BYPASS flag set. */ +#define TI_PP_DS_RESPONSE_HASH_VALID 0x8 +#endif /* CONFIG_APPCPU_GW_PP_HANDLE */ /*CONFIG_TI_PACKET_PROCESSOR */ /* per conntrack: protocol private data */ union nf_conntrack_proto { - /* insert conntrack proto private data here */ - struct nf_ct_dccp dccp; - struct ip_ct_sctp sctp; - struct ip_ct_tcp tcp; - struct nf_ct_gre gre; + /* insert conntrack proto private data here */ + struct nf_ct_dccp dccp; + struct ip_ct_sctp sctp; + struct ip_ct_tcp tcp; + struct nf_ct_gre gre; }; union nf_conntrack_expect_proto { - /* insert expect proto private data here */ + /* insert expect proto private data here */ }; #include #include #ifdef CONFIG_NETFILTER_DEBUG -#define NF_CT_ASSERT(x) WARN_ON(!(x)) +#define NF_CT_ASSERT(x) WARN_ON(!(x)) #else #define NF_CT_ASSERT(x) #endif @@ -51,20 +74,20 @@ struct nf_conntrack_helper; /* Must be kept in sync with the classes defined by helpers */ -#define NF_CT_MAX_EXPECT_CLASSES 4 +#define NF_CT_MAX_EXPECT_CLASSES 4 /* nf_conn feature for connections that have a helper */ struct nf_conn_help { - /* Helper. if any */ - struct nf_conntrack_helper __rcu *helper; + /* Helper. if any */ + struct nf_conntrack_helper __rcu *helper; - struct hlist_head expectations; + struct hlist_head expectations; - /* Current number of expected connections */ - u8 expecting[NF_CT_MAX_EXPECT_CLASSES]; + /* Current number of expected connections */ + u8 expecting[NF_CT_MAX_EXPECT_CLASSES]; - /* private helper information. */ - char data[]; + /* private helper information. */ + char data[]; }; #include @@ -79,7 +102,7 @@ * Helper nf_ct_put() equals nf_conntrack_put() by dec refcnt, * beware nf_ct_get() is different and don't inc refcnt. */ - struct nf_conntrack ct_general; + struct nf_conntrack ct_general; spinlock_t lock; u16 cpu; @@ -87,12 +110,12 @@ #ifdef CONFIG_NF_CONNTRACK_ZONES struct nf_conntrack_zone zone; #endif - /* XXX should I move this to the tail ? - Y.K */ - /* These are my tuples; original and reply */ - struct nf_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX]; + /* XXX should I move this to the tail ? - Y.K */ + /* These are my tuples; original and reply */ + struct nf_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX]; - /* Have we seen traffic both ways yet? (bitset) */ - unsigned long status; + /* Have we seen traffic both ways yet? (bitset) */ + unsigned long status; /* jiffies32 when this ct is considered dead */ u32 timeout; @@ -105,39 +128,51 @@ /* all members below initialized via memset */ struct { } __nfct_init_offset; - /* If we were expected by an expectation, this will be it */ - struct nf_conn *master; + /* If we were expected by an expectation, this will be it */ + struct nf_conn *master; #if defined(CONFIG_NF_CONNTRACK_MARK) - u_int32_t mark; + u_int32_t mark; #endif #ifdef CONFIG_NF_CONNTRACK_SECMARK - u_int32_t secmark; + u_int32_t secmark; #endif - /* Extensions */ - struct nf_ct_ext *ext; + /* Extensions */ + struct nf_ct_ext *ext; + +#ifdef CONFIG_TI_PACKET_PROCESSOR + struct list_head scb_link; + int ti_pp_status_flag; + int pp_appcpu_status_flag; + u_int16_t ti_pp_ds_response_hash; +#endif + +#ifdef CONFIG_APPCPU_GW_PP_HANDLE + /*flag used to indicate ct client mrpc call in progress b/w ATOM/ARM */ + int ct_tuple_arm_sync_wait; +#endif - /* Storage reserved for other modules, must be the last member */ - union nf_conntrack_proto proto; + /* Storage reserved for other modules, must be the last member */ + union nf_conntrack_proto proto; }; static inline struct nf_conn * nf_ct_tuplehash_to_ctrack(const struct nf_conntrack_tuple_hash *hash) { - return container_of(hash, struct nf_conn, - tuplehash[hash->tuple.dst.dir]); + return container_of(hash, struct nf_conn, + tuplehash[hash->tuple.dst.dir]); } static inline u_int16_t nf_ct_l3num(const struct nf_conn *ct) { - return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num; + return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num; } static inline u_int8_t nf_ct_protonum(const struct nf_conn *ct) { - return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; + return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; } #define nf_ct_tuple(ct, dir) (&(ct)->tuplehash[dir].tuple) @@ -149,7 +184,7 @@ static inline struct net *nf_ct_net(const struct nf_conn *ct) { - return read_pnet(&ct->ct_net); + return read_pnet(&ct->ct_net); } /* Alter reply tuple (maybe alter helper). */ @@ -165,15 +200,15 @@ static inline struct nf_conn * nf_ct_get(const struct sk_buff *skb, enum ip_conntrack_info *ctinfo) { - *ctinfo = skb->nfctinfo; - return (struct nf_conn *)skb->nfct; + *ctinfo = skb->nfctinfo; + return (struct nf_conn *)skb->nfct; } /* decrement reference count on a conntrack */ static inline void nf_ct_put(struct nf_conn *ct) { - NF_CT_ASSERT(ct); - nf_conntrack_put(&ct->ct_general); + NF_CT_ASSERT(ct); + nf_conntrack_put(&ct->ct_general); } /* Protocol module loading */ @@ -203,19 +238,19 @@ /* Refresh conntrack for this many jiffies and do accounting */ static inline void nf_ct_refresh_acct(struct nf_conn *ct, - enum ip_conntrack_info ctinfo, - const struct sk_buff *skb, - unsigned long extra_jiffies) + enum ip_conntrack_info ctinfo, + const struct sk_buff *skb, + unsigned long extra_jiffies) { - __nf_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies, 1); + __nf_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies, 1); } /* Refresh conntrack for this many jiffies */ static inline void nf_ct_refresh(struct nf_conn *ct, - const struct sk_buff *skb, - unsigned long extra_jiffies) + const struct sk_buff *skb, + unsigned long extra_jiffies) { - __nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0); + __nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0); } /* kill conntrack and do accounting */ @@ -230,8 +265,8 @@ /* These are for NAT. Icky. */ extern s32 (*nf_ct_nat_offset)(const struct nf_conn *ct, - enum ip_conntrack_dir dir, - u32 seq); + enum ip_conntrack_dir dir, + u32 seq); /* Fake conntrack entry for untracked connections */ DECLARE_PER_CPU(struct nf_conn, nf_conntrack_untracked); @@ -257,29 +292,29 @@ static inline int nf_ct_is_template(const struct nf_conn *ct) { - return test_bit(IPS_TEMPLATE_BIT, &ct->status); + return test_bit(IPS_TEMPLATE_BIT, &ct->status); } /* It's confirmed if it is, or has been in the hash table. */ static inline int nf_ct_is_confirmed(const struct nf_conn *ct) { - return test_bit(IPS_CONFIRMED_BIT, &ct->status); + return test_bit(IPS_CONFIRMED_BIT, &ct->status); } static inline int nf_ct_is_dying(const struct nf_conn *ct) { - return test_bit(IPS_DYING_BIT, &ct->status); + return test_bit(IPS_DYING_BIT, &ct->status); } static inline int nf_ct_is_untracked(const struct nf_conn *ct) { - return test_bit(IPS_UNTRACKED_BIT, &ct->status); + return test_bit(IPS_UNTRACKED_BIT, &ct->status); } /* Packet is received from loopback */ static inline bool nf_is_loopback_packet(const struct sk_buff *skb) { - return skb->dev && skb->skb_iif && skb->dev->flags & IFF_LOOPBACK; + return skb->dev && skb->skb_iif && skb->dev->flags & IFF_LOOPBACK; } #define nfct_time_stamp ((u32)(jiffies)) @@ -338,7 +373,7 @@ u32 nf_ct_get_id(const struct nf_conn *ct); -#define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) +#define NF_CT_STAT_INC(net, count) __this_cpu_inc((net)->ct.stat->count) #define NF_CT_STAT_INC_ATOMIC(net, count) this_cpu_inc((net)->ct.stat->count) #define NF_CT_STAT_ADD_ATOMIC(net, count, v) this_cpu_add((net)->ct.stat->count, (v))