[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>
This commit is contained in:
@@ -73,9 +73,9 @@ extern int nf_nat_proto_unique_tuple(struct nf_conntrack_tuple *tuple,
|
|||||||
const struct nf_conn *ct,
|
const struct nf_conn *ct,
|
||||||
u_int16_t *rover);
|
u_int16_t *rover);
|
||||||
|
|
||||||
extern int nf_nat_port_range_to_nlattr(struct sk_buff *skb,
|
extern int nf_nat_proto_range_to_nlattr(struct sk_buff *skb,
|
||||||
const struct nf_nat_range *range);
|
const struct nf_nat_range *range);
|
||||||
extern int nf_nat_port_nlattr_to_range(struct nlattr *tb[],
|
extern int nf_nat_proto_nlattr_to_range(struct nlattr *tb[],
|
||||||
struct nf_nat_range *range);
|
struct nf_nat_range *range);
|
||||||
|
|
||||||
#endif /*_NF_NAT_PROTO_H*/
|
#endif /*_NF_NAT_PROTO_H*/
|
||||||
|
@@ -544,46 +544,6 @@ void nf_nat_protocol_unregister(const struct nf_nat_protocol *proto)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(nf_nat_protocol_unregister);
|
EXPORT_SYMBOL(nf_nat_protocol_unregister);
|
||||||
|
|
||||||
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
|
||||||
int
|
|
||||||
nf_nat_port_range_to_nlattr(struct sk_buff *skb,
|
|
||||||
const struct nf_nat_range *range)
|
|
||||||
{
|
|
||||||
NLA_PUT_BE16(skb, CTA_PROTONAT_PORT_MIN, range->min.tcp.port);
|
|
||||||
NLA_PUT_BE16(skb, CTA_PROTONAT_PORT_MAX, range->max.tcp.port);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
nla_put_failure:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(nf_nat_port_nlattr_to_range);
|
|
||||||
|
|
||||||
int
|
|
||||||
nf_nat_port_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.tcp.port = nla_get_be16(tb[CTA_PROTONAT_PORT_MIN]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tb[CTA_PROTONAT_PORT_MAX]) {
|
|
||||||
if (ret)
|
|
||||||
range->max.tcp.port = range->min.tcp.port;
|
|
||||||
} else {
|
|
||||||
ret = 1;
|
|
||||||
range->max.tcp.port = nla_get_be16(tb[CTA_PROTONAT_PORT_MAX]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(nf_nat_port_range_to_nlattr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Noone using conntrack by the time this called. */
|
/* Noone using conntrack by the time this called. */
|
||||||
static void nf_nat_cleanup_conntrack(struct nf_conn *ct)
|
static void nf_nat_cleanup_conntrack(struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
|
@@ -88,3 +88,41 @@ int nf_nat_proto_unique_tuple(struct nf_conntrack_tuple *tuple,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nf_nat_proto_unique_tuple);
|
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
|
||||||
|
@@ -125,8 +125,8 @@ static const struct nf_nat_protocol gre = {
|
|||||||
.in_range = nf_nat_proto_in_range,
|
.in_range = nf_nat_proto_in_range,
|
||||||
.unique_tuple = gre_unique_tuple,
|
.unique_tuple = gre_unique_tuple,
|
||||||
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
||||||
.range_to_nlattr = nf_nat_port_range_to_nlattr,
|
.range_to_nlattr = nf_nat_proto_range_to_nlattr,
|
||||||
.nlattr_to_range = nf_nat_port_nlattr_to_range,
|
.nlattr_to_range = nf_nat_proto_nlattr_to_range,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ const struct nf_nat_protocol nf_nat_protocol_icmp = {
|
|||||||
.in_range = icmp_in_range,
|
.in_range = icmp_in_range,
|
||||||
.unique_tuple = icmp_unique_tuple,
|
.unique_tuple = icmp_unique_tuple,
|
||||||
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
||||||
.range_to_nlattr = nf_nat_port_range_to_nlattr,
|
.range_to_nlattr = nf_nat_proto_range_to_nlattr,
|
||||||
.nlattr_to_range = nf_nat_port_nlattr_to_range,
|
.nlattr_to_range = nf_nat_proto_nlattr_to_range,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@@ -88,7 +88,7 @@ const struct nf_nat_protocol nf_nat_protocol_tcp = {
|
|||||||
.in_range = nf_nat_proto_in_range,
|
.in_range = nf_nat_proto_in_range,
|
||||||
.unique_tuple = tcp_unique_tuple,
|
.unique_tuple = tcp_unique_tuple,
|
||||||
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
||||||
.range_to_nlattr = nf_nat_port_range_to_nlattr,
|
.range_to_nlattr = nf_nat_proto_range_to_nlattr,
|
||||||
.nlattr_to_range = nf_nat_port_nlattr_to_range,
|
.nlattr_to_range = nf_nat_proto_nlattr_to_range,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@@ -79,7 +79,7 @@ const struct nf_nat_protocol nf_nat_protocol_udp = {
|
|||||||
.in_range = nf_nat_proto_in_range,
|
.in_range = nf_nat_proto_in_range,
|
||||||
.unique_tuple = udp_unique_tuple,
|
.unique_tuple = udp_unique_tuple,
|
||||||
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
|
||||||
.range_to_nlattr = nf_nat_port_range_to_nlattr,
|
.range_to_nlattr = nf_nat_proto_range_to_nlattr,
|
||||||
.nlattr_to_range = nf_nat_port_nlattr_to_range,
|
.nlattr_to_range = nf_nat_proto_nlattr_to_range,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user