netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] SO_ORIGINAL_DST for getsockopt() in SCTP
@ 2009-07-03  0:26 Rafael Laufer
  2009-07-03  1:40 ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Rafael Laufer @ 2009-07-03  0:26 UTC (permalink / raw)
  To: netfilter-devel

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


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

end of thread, other threads:[~2009-08-10  8:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-03  0:26 [PATCH] SO_ORIGINAL_DST for getsockopt() in SCTP Rafael Laufer
2009-07-03  1:40 ` David Miller
2009-07-03  2:26   ` Rafael Laufer
2009-07-03  3:01     ` David Miller
2009-08-10  8:09     ` Patrick McHardy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).