netdev
[Top] [All Lists]

[XFRM]: Fix ICMP tempsel

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: [XFRM]: Fix ICMP tempsel
From: Patrick McHardy <kaber@xxxxxxxxx>
Date: Sat, 19 Feb 2005 12:43:43 +0100
Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>, Maillist netdev <netdev@xxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.5) Gecko/20050106 Debian/1.7.5-1
The selector ports are initialized to fl_ip_sport/fl_ip_dport instead
of xfrm_flowi_sport(fl)/xfrm_flowi_dport(fl). This is wrong for ICMP,
type and code should be stored in sport and dport, in struct flowi both
are contained in fl_ip_sport.


# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2005/02/19 12:35:18+01:00 kaber@xxxxxxxxxxxx 
#   [XFRM]: Fix ICMP tempsel
#   
#   Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
# 
# net/ipv6/xfrm6_state.c
#   2005/02/19 12:35:06+01:00 kaber@xxxxxxxxxxxx +2 -2
#   [XFRM]: Fix ICMP tempsel
#   
#   Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
# 
# net/ipv4/xfrm4_state.c
#   2005/02/19 12:35:06+01:00 kaber@xxxxxxxxxxxx +2 -2
#   [XFRM]: Fix ICMP tempsel
#   
#   Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
# 
diff -Nru a/net/ipv4/xfrm4_state.c b/net/ipv4/xfrm4_state.c
--- a/net/ipv4/xfrm4_state.c    2005-02-19 12:36:31 +01:00
+++ b/net/ipv4/xfrm4_state.c    2005-02-19 12:36:31 +01:00
@@ -20,9 +20,9 @@
 {
        x->sel.daddr.a4 = fl->fl4_dst;
        x->sel.saddr.a4 = fl->fl4_src;
-       x->sel.dport = fl->fl_ip_dport;
+       x->sel.dport = xfrm_flowi_dport(fl);
        x->sel.dport_mask = ~0;
-       x->sel.sport = fl->fl_ip_sport;
+       x->sel.sport = xfrm_flowi_sport(fl);
        x->sel.sport_mask = ~0;
        x->sel.prefixlen_d = 32;
        x->sel.prefixlen_s = 32;
diff -Nru a/net/ipv6/xfrm6_state.c b/net/ipv6/xfrm6_state.c
--- a/net/ipv6/xfrm6_state.c    2005-02-19 12:36:31 +01:00
+++ b/net/ipv6/xfrm6_state.c    2005-02-19 12:36:31 +01:00
@@ -27,9 +27,9 @@
         * to current session. */
        ipv6_addr_copy((struct in6_addr *)&x->sel.daddr, &fl->fl6_dst);
        ipv6_addr_copy((struct in6_addr *)&x->sel.saddr, &fl->fl6_src);
-       x->sel.dport = fl->fl_ip_dport;
+       x->sel.dport = xfrm_flowi_dport(fl);
        x->sel.dport_mask = ~0;
-       x->sel.sport = fl->fl_ip_sport;
+       x->sel.sport = xfrm_flowi_sport(fl);
        x->sel.sport_mask = ~0;
        x->sel.prefixlen_d = 128;
        x->sel.prefixlen_s = 128;
<Prev in Thread] Current Thread [Next in Thread>