summaryrefslogtreecommitdiff
path: root/net/ipv4/netfilter/nf_nat_proto_common.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2008-04-14 09:15:47 (GMT)
committerPatrick McHardy <kaber@trash.net>2008-04-14 09:15:47 (GMT)
commit535b57c7c1524125444aa1b874332f6ff1608ef5 (patch)
treec127d9bce1b29158343447967c50edd51e357890 /net/ipv4/netfilter/nf_nat_proto_common.c
parent5abd363f738dcd048ee790fb9b84d0768a8a407f (diff)
downloadlinux-fsl-qoriq-535b57c7c1524125444aa1b874332f6ff1608ef5.tar.xz
[NETFILTER]: nf_nat: move NAT ctnetlink helpers to nf_nat_proto_common
Move to nf_nat_proto_common and rename to nf_nat_proto_... since they're also used by protocols that don't have port numbers. Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/ipv4/netfilter/nf_nat_proto_common.c')
-rw-r--r--net/ipv4/netfilter/nf_nat_proto_common.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/net/ipv4/netfilter/nf_nat_proto_common.c b/net/ipv4/netfilter/nf_nat_proto_common.c
index 871ab0e..ef4dc39 100644
--- a/net/ipv4/netfilter/nf_nat_proto_common.c
+++ b/net/ipv4/netfilter/nf_nat_proto_common.c
@@ -88,3 +88,41 @@ int nf_nat_proto_unique_tuple(struct nf_conntrack_tuple *tuple,
return 0;
}
EXPORT_SYMBOL_GPL(nf_nat_proto_unique_tuple);
+
+#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
+int nf_nat_proto_range_to_nlattr(struct sk_buff *skb,
+ const struct nf_nat_range *range)
+{
+ NLA_PUT_BE16(skb, CTA_PROTONAT_PORT_MIN, range->min.all);
+ NLA_PUT_BE16(skb, CTA_PROTONAT_PORT_MAX, range->max.all);
+ return 0;
+
+nla_put_failure:
+ return -1;
+}
+EXPORT_SYMBOL_GPL(nf_nat_proto_nlattr_to_range);
+
+int nf_nat_proto_nlattr_to_range(struct nlattr *tb[],
+ struct nf_nat_range *range)
+{
+ int ret = 0;
+
+ /* we have to return whether we actually parsed something or not */
+
+ if (tb[CTA_PROTONAT_PORT_MIN]) {
+ ret = 1;
+ range->min.all = nla_get_be16(tb[CTA_PROTONAT_PORT_MIN]);
+ }
+
+ if (!tb[CTA_PROTONAT_PORT_MAX]) {
+ if (ret)
+ range->max.all = range->min.all;
+ } else {
+ ret = 1;
+ range->max.all = nla_get_be16(tb[CTA_PROTONAT_PORT_MAX]);
+ }
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(nf_nat_proto_range_to_nlattr);
+#endif