15b1158e9SJozsef Kadlecsik #ifndef _NF_NAT_HELPER_H
25b1158e9SJozsef Kadlecsik #define _NF_NAT_HELPER_H
35b1158e9SJozsef Kadlecsik /* NAT protocol helper routines. */
45b1158e9SJozsef Kadlecsik 
55b1158e9SJozsef Kadlecsik #include <net/netfilter/nf_conntrack.h>
65b1158e9SJozsef Kadlecsik 
75b1158e9SJozsef Kadlecsik struct sk_buff;
85b1158e9SJozsef Kadlecsik 
95b1158e9SJozsef Kadlecsik /* These return true or false. */
104e77be46SJoe Perches int __nf_nat_mangle_tcp_packet(struct sk_buff *skb, struct nf_conn *ct,
115b1158e9SJozsef Kadlecsik 			       enum ip_conntrack_info ctinfo,
124e77be46SJoe Perches 			       unsigned int protoff, unsigned int match_offset,
134e77be46SJoe Perches 			       unsigned int match_len, const char *rep_buffer,
14010c0b9fSPatrick McHardy 			       unsigned int rep_len, bool adjust);
15010c0b9fSPatrick McHardy 
16010c0b9fSPatrick McHardy static inline int nf_nat_mangle_tcp_packet(struct sk_buff *skb,
17010c0b9fSPatrick McHardy 					   struct nf_conn *ct,
18010c0b9fSPatrick McHardy 					   enum ip_conntrack_info ctinfo,
19051966c0SPatrick McHardy 					   unsigned int protoff,
20010c0b9fSPatrick McHardy 					   unsigned int match_offset,
21010c0b9fSPatrick McHardy 					   unsigned int match_len,
22010c0b9fSPatrick McHardy 					   const char *rep_buffer,
23010c0b9fSPatrick McHardy 					   unsigned int rep_len)
24010c0b9fSPatrick McHardy {
25051966c0SPatrick McHardy 	return __nf_nat_mangle_tcp_packet(skb, ct, ctinfo, protoff,
26010c0b9fSPatrick McHardy 					  match_offset, match_len,
27010c0b9fSPatrick McHardy 					  rep_buffer, rep_len, true);
28010c0b9fSPatrick McHardy }
29010c0b9fSPatrick McHardy 
304e77be46SJoe Perches int nf_nat_mangle_udp_packet(struct sk_buff *skb, struct nf_conn *ct,
315b1158e9SJozsef Kadlecsik 			     enum ip_conntrack_info ctinfo,
324e77be46SJoe Perches 			     unsigned int protoff, unsigned int match_offset,
334e77be46SJoe Perches 			     unsigned int match_len, const char *rep_buffer,
345b1158e9SJozsef Kadlecsik 			     unsigned int rep_len);
35010c0b9fSPatrick McHardy 
365b1158e9SJozsef Kadlecsik /* Setup NAT on this expected conntrack so it follows master, but goes
375b1158e9SJozsef Kadlecsik  * to port ct->master->saved_proto. */
384e77be46SJoe Perches void nf_nat_follow_master(struct nf_conn *ct, struct nf_conntrack_expect *this);
39f9dd09c7SJozsef Kadlecsik 
405b1158e9SJozsef Kadlecsik #endif
41