linux/include/net/netfilter/nf_nat_l3proto.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _NF_NAT_L3PROTO_H
   3#define _NF_NAT_L3PROTO_H
   4
   5struct nf_nat_l4proto;
   6struct nf_nat_l3proto {
   7        u8      l3proto;
   8
   9        bool    (*in_range)(const struct nf_conntrack_tuple *t,
  10                            const struct nf_nat_range *range);
  11
  12        u32     (*secure_port)(const struct nf_conntrack_tuple *t, __be16);
  13
  14        bool    (*manip_pkt)(struct sk_buff *skb,
  15                             unsigned int iphdroff,
  16                             const struct nf_nat_l4proto *l4proto,
  17                             const struct nf_conntrack_tuple *target,
  18                             enum nf_nat_manip_type maniptype);
  19
  20        void    (*csum_update)(struct sk_buff *skb, unsigned int iphdroff,
  21                               __sum16 *check,
  22                               const struct nf_conntrack_tuple *t,
  23                               enum nf_nat_manip_type maniptype);
  24
  25        void    (*csum_recalc)(struct sk_buff *skb, u8 proto,
  26                               void *data, __sum16 *check,
  27                               int datalen, int oldlen);
  28
  29        void    (*decode_session)(struct sk_buff *skb,
  30                                  const struct nf_conn *ct,
  31                                  enum ip_conntrack_dir dir,
  32                                  unsigned long statusbit,
  33                                  struct flowi *fl);
  34
  35        int     (*nlattr_to_range)(struct nlattr *tb[],
  36                                   struct nf_nat_range *range);
  37};
  38
  39int nf_nat_l3proto_register(const struct nf_nat_l3proto *);
  40void nf_nat_l3proto_unregister(const struct nf_nat_l3proto *);
  41const struct nf_nat_l3proto *__nf_nat_l3proto_find(u8 l3proto);
  42
  43int nf_nat_icmp_reply_translation(struct sk_buff *skb, struct nf_conn *ct,
  44                                  enum ip_conntrack_info ctinfo,
  45                                  unsigned int hooknum);
  46
  47unsigned int nf_nat_ipv4_in(void *priv, struct sk_buff *skb,
  48                            const struct nf_hook_state *state,
  49                            unsigned int (*do_chain)(void *priv,
  50                                                     struct sk_buff *skb,
  51                                                     const struct nf_hook_state *state,
  52                                                     struct nf_conn *ct));
  53
  54unsigned int nf_nat_ipv4_out(void *priv, struct sk_buff *skb,
  55                             const struct nf_hook_state *state,
  56                             unsigned int (*do_chain)(void *priv,
  57                                                      struct sk_buff *skb,
  58                                                      const struct nf_hook_state *state,
  59                                                      struct nf_conn *ct));
  60
  61unsigned int nf_nat_ipv4_local_fn(void *priv,
  62                                  struct sk_buff *skb,
  63                                  const struct nf_hook_state *state,
  64                                  unsigned int (*do_chain)(void *priv,
  65                                                           struct sk_buff *skb,
  66                                                           const struct nf_hook_state *state,
  67                                                           struct nf_conn *ct));
  68
  69unsigned int nf_nat_ipv4_fn(void *priv, struct sk_buff *skb,
  70                            const struct nf_hook_state *state,
  71                            unsigned int (*do_chain)(void *priv,
  72                                                     struct sk_buff *skb,
  73                                                     const struct nf_hook_state *state,
  74                                                     struct nf_conn *ct));
  75
  76int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct,
  77                                    enum ip_conntrack_info ctinfo,
  78                                    unsigned int hooknum, unsigned int hdrlen);
  79
  80unsigned int nf_nat_ipv6_in(void *priv, struct sk_buff *skb,
  81                            const struct nf_hook_state *state,
  82                            unsigned int (*do_chain)(void *priv,
  83                                                     struct sk_buff *skb,
  84                                                     const struct nf_hook_state *state,
  85                                                     struct nf_conn *ct));
  86
  87unsigned int nf_nat_ipv6_out(void *priv, struct sk_buff *skb,
  88                             const struct nf_hook_state *state,
  89                             unsigned int (*do_chain)(void *priv,
  90                                                      struct sk_buff *skb,
  91                                                      const struct nf_hook_state *state,
  92                                                      struct nf_conn *ct));
  93
  94unsigned int nf_nat_ipv6_local_fn(void *priv,
  95                                  struct sk_buff *skb,
  96                                  const struct nf_hook_state *state,
  97                                  unsigned int (*do_chain)(void *priv,
  98                                                           struct sk_buff *skb,
  99                                                           const struct nf_hook_state *state,
 100                                                           struct nf_conn *ct));
 101
 102unsigned int nf_nat_ipv6_fn(void *priv, struct sk_buff *skb,
 103                            const struct nf_hook_state *state,
 104                            unsigned int (*do_chain)(void *priv,
 105                                                     struct sk_buff *skb,
 106                                                     const struct nf_hook_state *state,
 107                                                     struct nf_conn *ct));
 108
 109#endif /* _NF_NAT_L3PROTO_H */
 110