linux/include/net/netfilter/nf_conntrack_seqadj.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _NF_CONNTRACK_SEQADJ_H
   3#define _NF_CONNTRACK_SEQADJ_H
   4
   5#include <net/netfilter/nf_conntrack_extend.h>
   6
   7/**
   8 * struct nf_ct_seqadj - sequence number adjustment information
   9 *
  10 * @correction_pos: position of the last TCP sequence number modification
  11 * @offset_before: sequence number offset before last modification
  12 * @offset_after: sequence number offset after last modification
  13 */
  14struct nf_ct_seqadj {
  15        u32             correction_pos;
  16        s32             offset_before;
  17        s32             offset_after;
  18};
  19
  20struct nf_conn_seqadj {
  21        struct nf_ct_seqadj     seq[IP_CT_DIR_MAX];
  22};
  23
  24static inline struct nf_conn_seqadj *nfct_seqadj(const struct nf_conn *ct)
  25{
  26        return nf_ct_ext_find(ct, NF_CT_EXT_SEQADJ);
  27}
  28
  29static inline struct nf_conn_seqadj *nfct_seqadj_ext_add(struct nf_conn *ct)
  30{
  31        return nf_ct_ext_add(ct, NF_CT_EXT_SEQADJ, GFP_ATOMIC);
  32}
  33
  34int nf_ct_seqadj_init(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
  35                      s32 off);
  36int nf_ct_seqadj_set(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
  37                     __be32 seq, s32 off);
  38void nf_ct_tcp_seqadj_set(struct sk_buff *skb, struct nf_conn *ct,
  39                          enum ip_conntrack_info ctinfo, s32 off);
  40
  41int nf_ct_seq_adjust(struct sk_buff *skb, struct nf_conn *ct,
  42                     enum ip_conntrack_info ctinfo, unsigned int protoff);
  43s32 nf_ct_seq_offset(const struct nf_conn *ct, enum ip_conntrack_dir, u32 seq);
  44
  45int nf_conntrack_seqadj_init(void);
  46void nf_conntrack_seqadj_fini(void);
  47
  48#endif /* _NF_CONNTRACK_SEQADJ_H */
  49