Lines Matching refs:opt
103 struct ipv6_txoptions *opt) in ipv6_update_options() argument
106 if (opt && in ipv6_update_options()
110 icsk->icsk_ext_hdr_len = opt->opt_flen + opt->opt_nflen; in ipv6_update_options()
114 opt = xchg((__force struct ipv6_txoptions **)&inet6_sk(sk)->opt, in ipv6_update_options()
115 opt); in ipv6_update_options()
118 return opt; in ipv6_update_options()
174 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
235 opt = xchg((__force struct ipv6_txoptions **)&np->opt, in do_ipv6_setsockopt()
237 if (opt) { in do_ipv6_setsockopt()
238 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
239 txopt_put(opt); in do_ipv6_setsockopt()
392 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
410 opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); in do_ipv6_setsockopt()
411 opt = ipv6_renew_options(sk, opt, optname, in do_ipv6_setsockopt()
414 if (IS_ERR(opt)) { in do_ipv6_setsockopt()
415 retv = PTR_ERR(opt); in do_ipv6_setsockopt()
421 if (optname == IPV6_RTHDR && opt && opt->srcrt) { in do_ipv6_setsockopt()
422 struct ipv6_rt_hdr *rthdr = opt->srcrt; in do_ipv6_setsockopt()
438 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
440 if (opt) { in do_ipv6_setsockopt()
441 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
442 txopt_put(opt); in do_ipv6_setsockopt()
471 struct ipv6_txoptions *opt = NULL; in do_ipv6_setsockopt() local
490 opt = sock_kmalloc(sk, sizeof(*opt) + optlen, GFP_KERNEL); in do_ipv6_setsockopt()
492 if (!opt) in do_ipv6_setsockopt()
495 memset(opt, 0, sizeof(*opt)); in do_ipv6_setsockopt()
496 atomic_set(&opt->refcnt, 1); in do_ipv6_setsockopt()
497 opt->tot_len = sizeof(*opt) + optlen; in do_ipv6_setsockopt()
499 if (copy_from_user(opt+1, optval, optlen)) in do_ipv6_setsockopt()
503 msg.msg_control = (void *)(opt+1); in do_ipv6_setsockopt()
505 retv = ip6_datagram_send_ctl(net, sk, &msg, &fl6, opt, &junk, in do_ipv6_setsockopt()
511 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
513 if (opt) { in do_ipv6_setsockopt()
514 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
515 txopt_put(opt); in do_ipv6_setsockopt()
946 static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt, in ipv6_getsockopt_sticky() argument
951 if (!opt) in ipv6_getsockopt_sticky()
956 hdr = opt->hopopt; in ipv6_getsockopt_sticky()
959 hdr = opt->dst0opt; in ipv6_getsockopt_sticky()
962 hdr = (struct ipv6_opt_hdr *)opt->srcrt; in ipv6_getsockopt_sticky()
965 hdr = opt->dst1opt; in ipv6_getsockopt_sticky()
1123 struct ipv6_txoptions *opt; in do_ipv6_getsockopt() local
1126 opt = rcu_dereference_protected(np->opt, sock_owned_by_user(sk)); in do_ipv6_getsockopt()
1127 len = ipv6_getsockopt_sticky(sk, opt, optname, optval, len); in do_ipv6_getsockopt()