All of lore.kernel.org
 help / color / mirror / Atom feed
* [NETFILTER 01/13]: Collapse tcpmss_reverse_mtu{4,6} into one function
@ 2008-07-10 13:24 Jan Engelhardt
  2008-07-10 13:24 ` 02/13 [NETFILTER]: Use unsigned types for hooknum and pf vars Jan Engelhardt
                   ` (12 more replies)
  0 siblings, 13 replies; 24+ messages in thread
From: Jan Engelhardt @ 2008-07-10 13:24 UTC (permalink / raw)
  To: kaber; +Cc: Netfilter Developer Mailing List

commit ffffffffffffffffffffffffffffffffffffffff
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Sat Mar 29 16:20:13 2008 +0100

[NETFILTER]: Collapse tcpmss_reverse_mtu{4,6} into one function
    
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
---
 net/netfilter/xt_TCPMSS.c |   42 +++++++++++-------------------------
 1 files changed, 13 insertions(+), 29 deletions(-)

diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS.c
index 217e2b6..beede49 100644
--- a/net/netfilter/xt_TCPMSS.c
+++ b/net/netfilter/xt_TCPMSS.c
@@ -147,17 +147,21 @@ tcpmss_mangle_packet(struct sk_buff *skb,
 	return TCPOLEN_MSS;
 }
 
-static u_int32_t tcpmss_reverse_mtu4(const struct iphdr *iph)
+static u_int32_t tcpmss_reverse_mtu(const struct sk_buff *skb,
+				    unsigned int family)
 {
-	struct flowi fl = {
-		.fl4_dst = iph->saddr,
-	};
+	struct flowi fl = {};
 	const struct nf_afinfo *ai;
 	struct rtable *rt = NULL;
 	u_int32_t mtu     = ~0U;
 
+	if (family == PF_INET)
+		fl.fl4_dst = ip_hdr(skb)->saddr;
+	else
+		fl.fl6_dst = ipv6_hdr(skb)->saddr;
+
 	rcu_read_lock();
-	ai = nf_get_afinfo(AF_INET);
+	ai = nf_get_afinfo(family);
 	if (ai != NULL)
 		ai->route((struct dst_entry **)&rt, &fl);
 	rcu_read_unlock();
@@ -178,7 +182,8 @@ tcpmss_tg4(struct sk_buff *skb, const struct net_device *in,
 	__be16 newlen;
 	int ret;
 
-	ret = tcpmss_mangle_packet(skb, targinfo, tcpmss_reverse_mtu4(iph),
+	ret = tcpmss_mangle_packet(skb, targinfo,
+				   tcpmss_reverse_mtu(skb, PF_INET),
 				   iph->ihl * 4,
 				   sizeof(*iph) + sizeof(struct tcphdr));
 	if (ret < 0)
@@ -193,28 +198,6 @@ tcpmss_tg4(struct sk_buff *skb, const struct net_device *in,
 }
 
 #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE)
-static u_int32_t tcpmss_reverse_mtu6(const struct ipv6hdr *iph)
-{
-	struct flowi fl = {
-		.fl6_dst = iph->saddr,
-	};
-	const struct nf_afinfo *ai;
-	struct rtable *rt = NULL;
-	u_int32_t mtu     = ~0U;
-
-	rcu_read_lock();
-	ai = nf_get_afinfo(AF_INET6);
-	if (ai != NULL)
-		ai->route((struct dst_entry **)&rt, &fl);
-	rcu_read_unlock();
-
-	if (rt != NULL) {
-		mtu = dst_mtu(&rt->u.dst);
-		dst_release(&rt->u.dst);
-	}
-	return mtu;
-}
-
 static unsigned int
 tcpmss_tg6(struct sk_buff *skb, const struct net_device *in,
            const struct net_device *out, unsigned int hooknum,
@@ -229,7 +212,8 @@ tcpmss_tg6(struct sk_buff *skb, const struct net_device *in,
 	tcphoff = ipv6_skip_exthdr(skb, sizeof(*ipv6h), &nexthdr);
 	if (tcphoff < 0)
 		return NF_DROP;
-	ret = tcpmss_mangle_packet(skb, targinfo, tcpmss_reverse_mtu6(ipv6h),
+	ret = tcpmss_mangle_packet(skb, targinfo,
+				   tcpmss_reverse_mtu(skb, PF_INET6),
 				   tcphoff,
 				   sizeof(*ipv6h) + sizeof(struct tcphdr));
 	if (ret < 0)


^ permalink raw reply related	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2008-07-23 10:15 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-10 13:24 [NETFILTER 01/13]: Collapse tcpmss_reverse_mtu{4,6} into one function Jan Engelhardt
2008-07-10 13:24 ` 02/13 [NETFILTER]: Use unsigned types for hooknum and pf vars Jan Engelhardt
2008-07-14 13:26   ` Patrick McHardy
2008-07-15  8:17     ` Jan Engelhardt
2008-07-15  9:55       ` Patrick McHardy
2008-07-10 13:24 ` 03/13 [NETFILTER]: Rename ipt_recent to xt_recent Jan Engelhardt
2008-07-10 13:25 ` 04/14 [NETFILTER]: xt_recent: IPv6 support Jan Engelhardt
2008-07-14 13:28   ` Patrick McHardy
2008-07-10 13:25 ` 05/13 [NETFILTER]: xt_recent: make old proc interface configurable Jan Engelhardt
2008-07-14 13:30   ` Patrick McHardy
2008-07-10 13:26 ` 06/13 [NETFILTER]: xt_length match, revision 1 Jan Engelhardt
2008-07-10 13:26 ` 07/13 [NETFILTER]: Introduce NFPROTO_* constants Jan Engelhardt
2008-07-14 13:31   ` Patrick McHardy
2008-07-23  9:34     ` Jan Engelhardt
2008-07-23 10:14       ` Patrick McHardy
2008-07-10 13:26 ` 08/13 [NETFILTER]: Use NFPROTO_* in extensions Jan Engelhardt
2008-07-10 13:26 ` 09/13 [NETFILTER]: Implement NFPROTO_UNSPEC as a wildcard for extensions Jan Engelhardt
2008-07-10 13:28 ` 11/13 [NETFILTER]: Make Ebtables use Xtables infrastructure Jan Engelhardt
2008-07-10 16:28   ` Bart De Schuymer
2008-07-10 13:28 ` 12/13 [NETFILTER]: Move ARPREPLY to net/netfilter/ and make it usable from arp_tables Jan Engelhardt
2008-07-10 13:28 ` 13/13 [NETFILTER]: Make BRIDGE_NF_EBTABLES a menuconfig option Jan Engelhardt
2008-07-10 13:29 ` 10/13 [NETFILTER]: Give AF-independent extensions an arpt_ aliases Jan Engelhardt
2008-07-14 13:38   ` Patrick McHardy
2008-07-14 13:13 ` [NETFILTER 01/13]: Collapse tcpmss_reverse_mtu{4,6} into one function Patrick McHardy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.