af_inet6.c (ce046c568cbfb4734583131086f88cfe993c01d0) | af_inet6.c (63159f29be1df7f93563a8a0f78c5e65fc844ed6) |
---|---|
1/* 2 * PF_INET6 socket protocol family 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * Adapted from linux/net/ipv4/af_inet.c --- 150 unchanged lines hidden (view full) --- 159 !ns_capable(net->user_ns, CAP_NET_RAW)) 160 goto out_rcu_unlock; 161 162 sock->ops = answer->ops; 163 answer_prot = answer->prot; 164 answer_flags = answer->flags; 165 rcu_read_unlock(); 166 | 1/* 2 * PF_INET6 socket protocol family 3 * Linux INET6 implementation 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * Adapted from linux/net/ipv4/af_inet.c --- 150 unchanged lines hidden (view full) --- 159 !ns_capable(net->user_ns, CAP_NET_RAW)) 160 goto out_rcu_unlock; 161 162 sock->ops = answer->ops; 163 answer_prot = answer->prot; 164 answer_flags = answer->flags; 165 rcu_read_unlock(); 166 |
167 WARN_ON(answer_prot->slab == NULL); | 167 WARN_ON(!answer_prot->slab); |
168 169 err = -ENOBUFS; 170 sk = sk_alloc(net, PF_INET6, GFP_KERNEL, answer_prot); | 168 169 err = -ENOBUFS; 170 sk = sk_alloc(net, PF_INET6, GFP_KERNEL, answer_prot); |
171 if (sk == NULL) | 171 if (!sk) |
172 goto out; 173 174 sock_init_data(sock, sk); 175 176 err = 0; 177 if (INET_PROTOSW_REUSE & answer_flags) 178 sk->sk_reuse = SK_CAN_REUSE; 179 --- 206 unchanged lines hidden (view full) --- 386 goto out; 387} 388EXPORT_SYMBOL(inet6_bind); 389 390int inet6_release(struct socket *sock) 391{ 392 struct sock *sk = sock->sk; 393 | 172 goto out; 173 174 sock_init_data(sock, sk); 175 176 err = 0; 177 if (INET_PROTOSW_REUSE & answer_flags) 178 sk->sk_reuse = SK_CAN_REUSE; 179 --- 206 unchanged lines hidden (view full) --- 386 goto out; 387} 388EXPORT_SYMBOL(inet6_bind); 389 390int inet6_release(struct socket *sock) 391{ 392 struct sock *sk = sock->sk; 393 |
394 if (sk == NULL) | 394 if (!sk) |
395 return -EINVAL; 396 397 /* Free mc lists */ 398 ipv6_sock_mc_close(sk); 399 400 /* Free ac lists */ 401 ipv6_sock_ac_close(sk); 402 --- 232 unchanged lines hidden (view full) --- 635 636int inet6_sk_rebuild_header(struct sock *sk) 637{ 638 struct ipv6_pinfo *np = inet6_sk(sk); 639 struct dst_entry *dst; 640 641 dst = __sk_dst_check(sk, np->dst_cookie); 642 | 395 return -EINVAL; 396 397 /* Free mc lists */ 398 ipv6_sock_mc_close(sk); 399 400 /* Free ac lists */ 401 ipv6_sock_ac_close(sk); 402 --- 232 unchanged lines hidden (view full) --- 635 636int inet6_sk_rebuild_header(struct sock *sk) 637{ 638 struct ipv6_pinfo *np = inet6_sk(sk); 639 struct dst_entry *dst; 640 641 dst = __sk_dst_check(sk, np->dst_cookie); 642 |
643 if (dst == NULL) { | 643 if (!dst) { |
644 struct inet_sock *inet = inet_sk(sk); 645 struct in6_addr *final_p, final; 646 struct flowi6 fl6; 647 648 memset(&fl6, 0, sizeof(fl6)); 649 fl6.flowi6_proto = sk->sk_protocol; 650 fl6.daddr = sk->sk_v6_daddr; 651 fl6.saddr = np->saddr; --- 379 unchanged lines hidden --- | 644 struct inet_sock *inet = inet_sk(sk); 645 struct in6_addr *final_p, final; 646 struct flowi6 fl6; 647 648 memset(&fl6, 0, sizeof(fl6)); 649 fl6.flowi6_proto = sk->sk_protocol; 650 fl6.daddr = sk->sk_v6_daddr; 651 fl6.saddr = np->saddr; --- 379 unchanged lines hidden --- |