diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2012-08-06 04:41:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-08-15 01:44:12 -0400 |
commit | 4110cc255ddec59c79fba4d71cdd948d0a382140 (patch) | |
tree | 53fc9c7cd7e41f547d94469f9268fde2a5404616 /net/sctp/ipv6.c | |
parent | 4cdadcbcb64bdf3ae8bdf3ef5bb2b91c85444cfa (diff) |
sctp: Make the association hashtable handle multiple network namespaces
- Use struct net in the hash calculation
- Use sock_net(association.base.sk) in the association lookups.
- On receive calculate the network namespace from skb->dev.
- Pass struct net from receive down to the functions that actually
do the association lookup.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Acked-by: Vlad Yasevich <vyasevich@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/ipv6.c')
-rw-r--r-- | net/sctp/ipv6.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index ed7139ea7978..2165a7ed25f1 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -154,6 +154,7 @@ SCTP_STATIC void sctp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
154 | struct ipv6_pinfo *np; | 154 | struct ipv6_pinfo *np; |
155 | sk_buff_data_t saveip, savesctp; | 155 | sk_buff_data_t saveip, savesctp; |
156 | int err; | 156 | int err; |
157 | struct net *net = dev_net(skb->dev); | ||
157 | 158 | ||
158 | idev = in6_dev_get(skb->dev); | 159 | idev = in6_dev_get(skb->dev); |
159 | 160 | ||
@@ -162,7 +163,7 @@ SCTP_STATIC void sctp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt, | |||
162 | savesctp = skb->transport_header; | 163 | savesctp = skb->transport_header; |
163 | skb_reset_network_header(skb); | 164 | skb_reset_network_header(skb); |
164 | skb_set_transport_header(skb, offset); | 165 | skb_set_transport_header(skb, offset); |
165 | sk = sctp_err_lookup(AF_INET6, skb, sctp_hdr(skb), &asoc, &transport); | 166 | sk = sctp_err_lookup(net, AF_INET6, skb, sctp_hdr(skb), &asoc, &transport); |
166 | /* Put back, the original pointers. */ | 167 | /* Put back, the original pointers. */ |
167 | skb->network_header = saveip; | 168 | skb->network_header = saveip; |
168 | skb->transport_header = savesctp; | 169 | skb->transport_header = savesctp; |