Lines Matching refs:sk
93 static __inline__ struct ipv6_pinfo *inet6_sk_generic(struct sock *sk) in inet6_sk_generic() argument
95 const int offset = sk->sk_prot->obj_size - sizeof(struct ipv6_pinfo); in inet6_sk_generic()
97 return (struct ipv6_pinfo *)(((u8 *)sk) + offset); in inet6_sk_generic()
105 struct sock *sk; in inet6_create() local
173 sk = sk_alloc(net, PF_INET6, GFP_KERNEL, answer_prot); in inet6_create()
174 if (!sk) in inet6_create()
177 sock_init_data(sock, sk); in inet6_create()
181 sk->sk_reuse = SK_CAN_REUSE; in inet6_create()
183 inet = inet_sk(sk); in inet6_create()
192 sk->sk_destruct = inet_sock_destruct; in inet6_create()
193 sk->sk_family = PF_INET6; in inet6_create()
194 sk->sk_protocol = protocol; in inet6_create()
196 sk->sk_backlog_rcv = answer->prot->backlog_rcv; in inet6_create()
198 inet_sk(sk)->pinet6 = np = inet6_sk_generic(sk); in inet6_create()
203 sk->sk_ipv6only = net->ipv6.sysctl.bindv6only; in inet6_create()
229 sk_refcnt_debug_inc(sk); in inet6_create()
237 sk->sk_prot->hash(sk); in inet6_create()
239 if (sk->sk_prot->init) { in inet6_create()
240 err = sk->sk_prot->init(sk); in inet6_create()
242 sk_common_release(sk); in inet6_create()
258 struct sock *sk = sock->sk; in inet6_bind() local
259 struct inet_sock *inet = inet_sk(sk); in inet6_bind()
260 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_bind()
261 struct net *net = sock_net(sk); in inet6_bind()
268 if (sk->sk_prot->bind) in inet6_bind()
269 return sk->sk_prot->bind(sk, uaddr, addr_len); in inet6_bind()
285 lock_sock(sk); in inet6_bind()
288 if (sk->sk_state != TCP_CLOSE || inet->inet_num) { in inet6_bind()
300 if (sk->sk_ipv6only) { in inet6_bind()
328 sk->sk_bound_dev_if = addr->sin6_scope_id; in inet6_bind()
332 if (!sk->sk_bound_dev_if) { in inet6_bind()
336 dev = dev_get_by_index_rcu(net, sk->sk_bound_dev_if); in inet6_bind()
362 sk->sk_v6_rcv_saddr = addr->sin6_addr; in inet6_bind()
368 if (sk->sk_prot->get_port(sk, snum)) { in inet6_bind()
369 inet_reset_saddr(sk); in inet6_bind()
375 sk->sk_userlocks |= SOCK_BINDADDR_LOCK; in inet6_bind()
377 sk->sk_ipv6only = 1; in inet6_bind()
380 sk->sk_userlocks |= SOCK_BINDPORT_LOCK; in inet6_bind()
385 release_sock(sk); in inet6_bind()
395 struct sock *sk = sock->sk; in inet6_release() local
397 if (!sk) in inet6_release()
401 ipv6_sock_mc_close(sk); in inet6_release()
404 ipv6_sock_ac_close(sk); in inet6_release()
410 void inet6_destroy_sock(struct sock *sk) in inet6_destroy_sock() argument
412 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_destroy_sock()
427 fl6_free_socklist(sk); in inet6_destroy_sock()
433 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in inet6_destroy_sock()
447 struct sock *sk = sock->sk; in inet6_getname() local
448 struct inet_sock *inet = inet_sk(sk); in inet6_getname()
449 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_getname()
457 if (((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_SYN_SENT)) && in inet6_getname()
461 sin->sin6_addr = sk->sk_v6_daddr; in inet6_getname()
465 if (ipv6_addr_any(&sk->sk_v6_rcv_saddr)) in inet6_getname()
468 sin->sin6_addr = sk->sk_v6_rcv_saddr; in inet6_getname()
473 sk->sk_bound_dev_if); in inet6_getname()
481 struct sock *sk = sock->sk; in inet6_ioctl() local
482 struct net *net = sock_net(sk); in inet6_ioctl()
486 return sock_get_timestamp(sk, (struct timeval __user *)arg); in inet6_ioctl()
489 return sock_get_timestampns(sk, (struct timespec __user *)arg); in inet6_ioctl()
503 if (!sk->sk_prot->ioctl) in inet6_ioctl()
505 return sk->sk_prot->ioctl(sk, cmd, arg); in inet6_ioctl()
641 int inet6_sk_rebuild_header(struct sock *sk) in inet6_sk_rebuild_header() argument
643 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_sk_rebuild_header()
646 dst = __sk_dst_check(sk, np->dst_cookie); in inet6_sk_rebuild_header()
649 struct inet_sock *inet = inet_sk(sk); in inet6_sk_rebuild_header()
654 fl6.flowi6_proto = sk->sk_protocol; in inet6_sk_rebuild_header()
655 fl6.daddr = sk->sk_v6_daddr; in inet6_sk_rebuild_header()
658 fl6.flowi6_oif = sk->sk_bound_dev_if; in inet6_sk_rebuild_header()
659 fl6.flowi6_mark = sk->sk_mark; in inet6_sk_rebuild_header()
662 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); in inet6_sk_rebuild_header()
669 dst = ip6_dst_lookup_flow(sk, &fl6, final_p); in inet6_sk_rebuild_header()
671 sk->sk_route_caps = 0; in inet6_sk_rebuild_header()
672 sk->sk_err_soft = -PTR_ERR(dst); in inet6_sk_rebuild_header()
676 __ip6_dst_store(sk, dst, NULL, NULL); in inet6_sk_rebuild_header()
683 bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb, in ipv6_opt_accepted() argument
686 const struct ipv6_pinfo *np = inet6_sk(sk); in ipv6_opt_accepted()