linux/include/net/netfilter/nf_nat_helper.h
<<
>>
Prefs
   1#ifndef _NF_NAT_HELPER_H
   2#define _NF_NAT_HELPER_H
   3/* NAT protocol helper routines. */
   4
   5#include <net/netfilter/nf_conntrack.h>
   6
   7struct sk_buff;
   8
   9/* These return true or false. */
  10extern int __nf_nat_mangle_tcp_packet(struct sk_buff *skb,
  11                                      struct nf_conn *ct,
  12                                      enum ip_conntrack_info ctinfo,
  13                                      unsigned int match_offset,
  14                                      unsigned int match_len,
  15                                      const char *rep_buffer,
  16                                      unsigned int rep_len, bool adjust);
  17
  18static inline int nf_nat_mangle_tcp_packet(struct sk_buff *skb,
  19                                           struct nf_conn *ct,
  20                                           enum ip_conntrack_info ctinfo,
  21                                           unsigned int match_offset,
  22                                           unsigned int match_len,
  23                                           const char *rep_buffer,
  24                                           unsigned int rep_len)
  25{
  26        return __nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
  27                                          match_offset, match_len,
  28                                          rep_buffer, rep_len, true);
  29}
  30
  31extern int nf_nat_mangle_udp_packet(struct sk_buff *skb,
  32                                    struct nf_conn *ct,
  33                                    enum ip_conntrack_info ctinfo,
  34                                    unsigned int match_offset,
  35                                    unsigned int match_len,
  36                                    const char *rep_buffer,
  37                                    unsigned int rep_len);
  38
  39extern void nf_nat_set_seq_adjust(struct nf_conn *ct,
  40                                  enum ip_conntrack_info ctinfo,
  41                                  __be32 seq, s16 off);
  42extern int nf_nat_seq_adjust(struct sk_buff *skb,
  43                             struct nf_conn *ct,
  44                             enum ip_conntrack_info ctinfo);
  45extern int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb,
  46                                     struct nf_conn *ct,
  47                                     enum ip_conntrack_info ctinfo);
  48
  49/* Setup NAT on this expected conntrack so it follows master, but goes
  50 * to port ct->master->saved_proto. */
  51extern void nf_nat_follow_master(struct nf_conn *ct,
  52                                 struct nf_conntrack_expect *this);
  53
  54extern s16 nf_nat_get_offset(const struct nf_conn *ct,
  55                             enum ip_conntrack_dir dir,
  56                             u32 seq);
  57#endif
  58