Contributors: 9
	  
        
          | Author | 
          Tokens | 
          Token Proportion | 
          Commits | 
          Commit Proportion | 
        
	  
	  
        
        
          | Patrick McHardy | 
          97 | 
          53.59% | 
          6 | 
          31.58% | 
        
        
          | Yasuyuki Kozakai | 
          33 | 
          18.23% | 
          3 | 
          15.79% | 
        
        
          | Jozsef Kadlecsik | 
          13 | 
          7.18% | 
          2 | 
          10.53% | 
        
        
          | Pablo Neira Ayuso | 
          12 | 
          6.63% | 
          2 | 
          10.53% | 
        
        
          | Harald Welte | 
          9 | 
          4.97% | 
          1 | 
          5.26% | 
        
        
          | Linus Torvalds (pre-git) | 
          9 | 
          4.97% | 
          1 | 
          5.26% | 
        
        
          | Kazunori Miyazawa | 
          5 | 
          2.76% | 
          1 | 
          5.26% | 
        
        
          | Herbert Xu | 
          2 | 
          1.10% | 
          2 | 
          10.53% | 
        
        
          | Greg Kroah-Hartman | 
          1 | 
          0.55% | 
          1 | 
          5.26% | 
        
	  
	  
        
          | Total | 
          181 | 
           | 
          19 | 
           | 
	    
	  
    
 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _NF_CONNTRACK_SEQADJ_H
#define _NF_CONNTRACK_SEQADJ_H
#include <net/netfilter/nf_conntrack_extend.h>
/**
 * struct nf_ct_seqadj - sequence number adjustment information
 *
 * @correction_pos: position of the last TCP sequence number modification
 * @offset_before: sequence number offset before last modification
 * @offset_after: sequence number offset after last modification
 */
struct nf_ct_seqadj {
	u32		correction_pos;
	s32		offset_before;
	s32		offset_after;
};
struct nf_conn_seqadj {
	struct nf_ct_seqadj	seq[IP_CT_DIR_MAX];
};
static inline struct nf_conn_seqadj *nfct_seqadj(const struct nf_conn *ct)
{
	return nf_ct_ext_find(ct, NF_CT_EXT_SEQADJ);
}
static inline struct nf_conn_seqadj *nfct_seqadj_ext_add(struct nf_conn *ct)
{
	return nf_ct_ext_add(ct, NF_CT_EXT_SEQADJ, GFP_ATOMIC);
}
int nf_ct_seqadj_init(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
		      s32 off);
int nf_ct_seqadj_set(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
		     __be32 seq, s32 off);
void nf_ct_tcp_seqadj_set(struct sk_buff *skb, struct nf_conn *ct,
			  enum ip_conntrack_info ctinfo, s32 off);
int nf_ct_seq_adjust(struct sk_buff *skb, struct nf_conn *ct,
		     enum ip_conntrack_info ctinfo, unsigned int protoff);
s32 nf_ct_seq_offset(const struct nf_conn *ct, enum ip_conntrack_dir, u32 seq);
#endif /* _NF_CONNTRACK_SEQADJ_H */