[PATCH] SO_ORIGINAL_DST for getsockopt() in SCTP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

a tiny kernel patch to allow getsockopt() with SO_ORIGINAL_DST to work for SCTP:

diff -rup linux-2.6.28.orig/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c linux-2.6.28/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c --- linux-2.6.28.orig/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c 2008-12-24 15:26:37.000000000 -0800 +++ linux-2.6.28/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c 2009-07-02 17:07:09.000000000 -0700
@@ -258,11 +258,11 @@ getorigdst(struct sock *sk, int optval,
   tuple.dst.u3.ip = inet->daddr;
   tuple.dst.u.tcp.port = inet->dport;
   tuple.src.l3num = PF_INET;
-   tuple.dst.protonum = IPPROTO_TCP;
+   tuple.dst.protonum = sk->sk_protocol;

-   /* We only do TCP at the moment: is there a better way? */
-   if (strcmp(sk->sk_prot->name, "TCP")) {
-       pr_debug("SO_ORIGINAL_DST: Not a TCP socket\n");
+   /* We only do TCP and SCTP at the moment: is there a better way? */
+ if ((sk->sk_protocol != IPPROTO_TCP) && (sk->sk_protocol != IPPROTO_SCTP)) {
+       pr_debug("SO_ORIGINAL_DST: Not a TCP/SCTP socket\n");
       return -ENOPROTOOPT;
   }


Rafael

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux