1/* The "unknown" protocol. This is what is used for protocols we 2 * don't understand. It's returned by ip_ct_find_proto(). 3 */ 4 5/* (C) 1999-2001 Paul `Rusty' Russell 6 * (C) 2002-2006 Netfilter Core Team <coreteam@netfilter.org> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 */ 12 13#include <linux/types.h> 14#include <linux/init.h> 15 16#include <linux/netfilter.h> 17#include <net/netfilter/nf_nat.h> 18#include <net/netfilter/nf_nat_rule.h> 19#include <net/netfilter/nf_nat_protocol.h> 20 21static bool unknown_in_range(const struct nf_conntrack_tuple *tuple, 22 enum nf_nat_manip_type manip_type, 23 const union nf_conntrack_man_proto *min, 24 const union nf_conntrack_man_proto *max) 25{ 26 return true; 27} 28 29static void unknown_unique_tuple(struct nf_conntrack_tuple *tuple, 30 const struct nf_nat_range *range, 31 enum nf_nat_manip_type maniptype, 32 const struct nf_conn *ct) 33{ 34 /* Sorry: we can't help you; if it's not unique, we can't frob 35 anything. */ 36 return; 37} 38 39static bool 40unknown_manip_pkt(struct sk_buff *skb, 41 unsigned int iphdroff, 42 const struct nf_conntrack_tuple *tuple, 43 enum nf_nat_manip_type maniptype) 44{ 45 return true; 46} 47 48const struct nf_nat_protocol nf_nat_unknown_protocol = { 49 /* .me isn't set: getting a ref to this cannot fail. */ 50 .manip_pkt = unknown_manip_pkt, 51 .in_range = unknown_in_range, 52 .unique_tuple = unknown_unique_tuple, 53}; 54