Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 535b57c7 authored by Patrick McHardy's avatar Patrick McHardy
Browse files

[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: default avatarPatrick McHardy <kaber@trash.net>
parent 5abd363f
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -73,9 +73,9 @@ extern int nf_nat_proto_unique_tuple(struct nf_conntrack_tuple *tuple,
				     const struct nf_conn *ct,
				     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);
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);

#endif /*_NF_NAT_PROTO_H*/
+0 −40
Original line number Diff line number Diff line
@@ -544,46 +544,6 @@ void nf_nat_protocol_unregister(const struct nf_nat_protocol *proto)
}
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. */
static void nf_nat_cleanup_conntrack(struct nf_conn *ct)
{
+38 −0
Original line number Diff line number Diff line
@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -125,8 +125,8 @@ static const struct nf_nat_protocol gre = {
	.in_range		= nf_nat_proto_in_range,
	.unique_tuple		= gre_unique_tuple,
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
	.range_to_nlattr	= nf_nat_port_range_to_nlattr,
	.nlattr_to_range	= nf_nat_port_nlattr_to_range,
	.range_to_nlattr	= nf_nat_proto_range_to_nlattr,
	.nlattr_to_range	= nf_nat_proto_nlattr_to_range,
#endif
};

+2 −2
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ const struct nf_nat_protocol nf_nat_protocol_icmp = {
	.in_range		= icmp_in_range,
	.unique_tuple		= icmp_unique_tuple,
#if defined(CONFIG_NF_CT_NETLINK) || defined(CONFIG_NF_CT_NETLINK_MODULE)
	.range_to_nlattr	= nf_nat_port_range_to_nlattr,
	.nlattr_to_range	= nf_nat_port_nlattr_to_range,
	.range_to_nlattr	= nf_nat_proto_range_to_nlattr,
	.nlattr_to_range	= nf_nat_proto_nlattr_to_range,
#endif
};
Loading