projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[IPV6]: Optimize hop-limit determination.
[deliverable/linux.git]
/
net
/
ipv6
/
ipv6_sockglue.c
diff --git
a/net/ipv6/ipv6_sockglue.c
b/net/ipv6/ipv6_sockglue.c
index 3bbfdff698d2f02f35ca19beb4f5350ca25bb55e..8e29fb1d1df6a57a1b6eaab0a5a1ffc0e596f6b3 100644
(file)
--- a/
net/ipv6/ipv6_sockglue.c
+++ b/
net/ipv6/ipv6_sockglue.c
@@
-107,6
+107,7
@@
static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
char __user *optval, int optlen)
{
struct ipv6_pinfo *np = inet6_sk(sk);
char __user *optval, int optlen)
{
struct ipv6_pinfo *np = inet6_sk(sk);
+ struct net *net = sk->sk_net;
int val, valbool;
int retv = -ENOPROTOOPT;
int val, valbool;
int retv = -ENOPROTOOPT;
@@
-127,9
+128,7
@@
static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
struct sk_buff *pktopt;
if (sk->sk_protocol != IPPROTO_UDP &&
struct sk_buff *pktopt;
if (sk->sk_protocol != IPPROTO_UDP &&
-#ifdef CONFIG_IP_UDPLITE
sk->sk_protocol != IPPROTO_UDPLITE &&
sk->sk_protocol != IPPROTO_UDPLITE &&
-#endif
sk->sk_protocol != IPPROTO_TCP)
break;
sk->sk_protocol != IPPROTO_TCP)
break;
@@
-169,7
+168,7
@@
static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
} else {
struct proto *prot = &udp_prot;
} else {
struct proto *prot = &udp_prot;
- if (
IS_PROTO_UDPLITE(sk->sk_protocol)
)
+ if (
sk->sk_protocol == IPPROTO_UDPLITE
)
prot = &udplite_prot;
local_bh_disable();
sock_prot_inuse_add(sk->sk_prot, -1);
prot = &udplite_prot;
local_bh_disable();
sock_prot_inuse_add(sk->sk_prot, -1);
@@
-434,7
+433,7
@@
done:
if (sk->sk_bound_dev_if && sk->sk_bound_dev_if != val)
goto e_inval;
if (sk->sk_bound_dev_if && sk->sk_bound_dev_if != val)
goto e_inval;
- if (__dev_get_by_index(
&init_
net, val) == NULL) {
+ if (__dev_get_by_index(net, val) == NULL) {
retv = -ENODEV;
break;
}
retv = -ENODEV;
break;
}
@@
-734,9
+733,7
@@
static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
switch (optname) {
case IPV6_ADDRFORM:
if (sk->sk_protocol != IPPROTO_UDP &&
switch (optname) {
case IPV6_ADDRFORM:
if (sk->sk_protocol != IPPROTO_UDP &&
-#ifdef CONFIG_IP_UDPLITE
sk->sk_protocol != IPPROTO_UDPLITE &&
sk->sk_protocol != IPPROTO_UDPLITE &&
-#endif
sk->sk_protocol != IPPROTO_TCP)
return -EINVAL;
if (sk->sk_state != TCP_ESTABLISHED)
sk->sk_protocol != IPPROTO_TCP)
return -EINVAL;
if (sk->sk_state != TCP_ESTABLISHED)
@@
-907,9
+904,7
@@
static int do_ipv6_getsockopt(struct sock *sk, int level, int optname,
dst = sk_dst_get(sk);
if (dst) {
if (val < 0)
dst = sk_dst_get(sk);
if (dst) {
if (val < 0)
- val = dst_metric(dst, RTAX_HOPLIMIT);
- if (val < 0)
- val = ipv6_get_hoplimit(dst->dev);
+ val = ip6_dst_hoplimit(dst);
dst_release(dst);
}
if (val < 0)
dst_release(dst);
}
if (val < 0)
This page took
0.027018 seconds
and
5
git commands to generate.