netfilter: nf_conntrack: add SCTP support for SO_ORIGINAL_DST
authorRafael Laufer <rlaufer@cs.ucla.edu>
Mon, 10 Aug 2009 08:08:27 +0000 (10:08 +0200)
committerPatrick McHardy <kaber@trash.net>
Mon, 10 Aug 2009 08:08:27 +0000 (10:08 +0200)
Signed-off-by: Patrick McHardy <kaber@trash.net>
net/ipv4/netfilter/nf_conntrack_l3proto_ipv4.c

index 7d2ead7228ac700265a35b295767f58bc4fd2952..05a9bc8df53690a2310fee9ec43442c81c91eed3 100644 (file)
@@ -256,11 +256,11 @@ getorigdst(struct sock *sk, int optval, void __user *user, int *len)
        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;
        }