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, kern); 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 np->autoflowlabel = ip6_default_np_autolabel(sock_net(sk)); in inet6_create()
204 sk->sk_ipv6only = net->ipv6.sysctl.bindv6only; in inet6_create()
230 sk_refcnt_debug_inc(sk); in inet6_create()
238 sk->sk_prot->hash(sk); in inet6_create()
240 if (sk->sk_prot->init) { in inet6_create()
241 err = sk->sk_prot->init(sk); in inet6_create()
243 sk_common_release(sk); in inet6_create()
259 struct sock *sk = sock->sk; in inet6_bind() local
260 struct inet_sock *inet = inet_sk(sk); in inet6_bind()
261 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_bind()
262 struct net *net = sock_net(sk); in inet6_bind()
269 if (sk->sk_prot->bind) in inet6_bind()
270 return sk->sk_prot->bind(sk, uaddr, addr_len); in inet6_bind()
286 lock_sock(sk); in inet6_bind()
289 if (sk->sk_state != TCP_CLOSE || inet->inet_num) { in inet6_bind()
301 if (sk->sk_ipv6only) { in inet6_bind()
329 sk->sk_bound_dev_if = addr->sin6_scope_id; in inet6_bind()
333 if (!sk->sk_bound_dev_if) { in inet6_bind()
337 dev = dev_get_by_index_rcu(net, sk->sk_bound_dev_if); in inet6_bind()
364 sk->sk_v6_rcv_saddr = addr->sin6_addr; in inet6_bind()
371 sk->sk_prot->get_port(sk, snum)) { in inet6_bind()
372 inet_reset_saddr(sk); in inet6_bind()
378 sk->sk_userlocks |= SOCK_BINDADDR_LOCK; in inet6_bind()
380 sk->sk_ipv6only = 1; in inet6_bind()
383 sk->sk_userlocks |= SOCK_BINDPORT_LOCK; in inet6_bind()
388 release_sock(sk); in inet6_bind()
398 struct sock *sk = sock->sk; in inet6_release() local
400 if (!sk) in inet6_release()
404 ipv6_sock_mc_close(sk); in inet6_release()
407 ipv6_sock_ac_close(sk); in inet6_release()
413 void inet6_destroy_sock(struct sock *sk) in inet6_destroy_sock() argument
415 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_destroy_sock()
430 fl6_free_socklist(sk); in inet6_destroy_sock()
436 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in inet6_destroy_sock()
450 struct sock *sk = sock->sk; in inet6_getname() local
451 struct inet_sock *inet = inet_sk(sk); in inet6_getname()
452 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_getname()
460 if (((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_SYN_SENT)) && in inet6_getname()
464 sin->sin6_addr = sk->sk_v6_daddr; in inet6_getname()
468 if (ipv6_addr_any(&sk->sk_v6_rcv_saddr)) in inet6_getname()
471 sin->sin6_addr = sk->sk_v6_rcv_saddr; in inet6_getname()
476 sk->sk_bound_dev_if); in inet6_getname()
484 struct sock *sk = sock->sk; in inet6_ioctl() local
485 struct net *net = sock_net(sk); in inet6_ioctl()
489 return sock_get_timestamp(sk, (struct timeval __user *)arg); in inet6_ioctl()
492 return sock_get_timestampns(sk, (struct timespec __user *)arg); in inet6_ioctl()
506 if (!sk->sk_prot->ioctl) in inet6_ioctl()
508 return sk->sk_prot->ioctl(sk, cmd, arg); in inet6_ioctl()
644 int inet6_sk_rebuild_header(struct sock *sk) in inet6_sk_rebuild_header() argument
646 struct ipv6_pinfo *np = inet6_sk(sk); in inet6_sk_rebuild_header()
649 dst = __sk_dst_check(sk, np->dst_cookie); in inet6_sk_rebuild_header()
652 struct inet_sock *inet = inet_sk(sk); in inet6_sk_rebuild_header()
657 fl6.flowi6_proto = sk->sk_protocol; in inet6_sk_rebuild_header()
658 fl6.daddr = sk->sk_v6_daddr; in inet6_sk_rebuild_header()
661 fl6.flowi6_oif = sk->sk_bound_dev_if; in inet6_sk_rebuild_header()
662 fl6.flowi6_mark = sk->sk_mark; in inet6_sk_rebuild_header()
665 security_sk_classify_flow(sk, flowi6_to_flowi(&fl6)); in inet6_sk_rebuild_header()
672 dst = ip6_dst_lookup_flow(sk, &fl6, final_p); in inet6_sk_rebuild_header()
674 sk->sk_route_caps = 0; in inet6_sk_rebuild_header()
675 sk->sk_err_soft = -PTR_ERR(dst); in inet6_sk_rebuild_header()
679 ip6_dst_store(sk, dst, NULL, NULL); in inet6_sk_rebuild_header()
686 bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb, in ipv6_opt_accepted() argument
689 const struct ipv6_pinfo *np = inet6_sk(sk); in ipv6_opt_accepted()