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()
175 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
236 opt = xchg((__force struct ipv6_txoptions **)&np->opt, in do_ipv6_setsockopt()
238 if (opt) { in do_ipv6_setsockopt()
239 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
240 txopt_put(opt); in do_ipv6_setsockopt()
400 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
430 opt = rcu_dereference_protected(np->opt, in do_ipv6_setsockopt()
432 opt = ipv6_renew_options(sk, opt, optname, new); in do_ipv6_setsockopt()
434 if (IS_ERR(opt)) { in do_ipv6_setsockopt()
435 retv = PTR_ERR(opt); in do_ipv6_setsockopt()
441 if (optname == IPV6_RTHDR && opt && opt->srcrt) { in do_ipv6_setsockopt()
442 struct ipv6_rt_hdr *rthdr = opt->srcrt; in do_ipv6_setsockopt()
455 opt->srcrt; in do_ipv6_setsockopt()
467 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
469 if (opt) { in do_ipv6_setsockopt()
470 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
471 txopt_put(opt); in do_ipv6_setsockopt()
500 struct ipv6_txoptions *opt = NULL; in do_ipv6_setsockopt() local
519 opt = sock_kmalloc(sk, sizeof(*opt) + optlen, GFP_KERNEL); in do_ipv6_setsockopt()
521 if (!opt) in do_ipv6_setsockopt()
524 memset(opt, 0, sizeof(*opt)); in do_ipv6_setsockopt()
525 refcount_set(&opt->refcnt, 1); in do_ipv6_setsockopt()
526 opt->tot_len = sizeof(*opt) + optlen; in do_ipv6_setsockopt()
528 if (copy_from_user(opt+1, optval, optlen)) in do_ipv6_setsockopt()
532 msg.msg_control = (void *)(opt+1); in do_ipv6_setsockopt()
533 ipc6.opt = opt; in do_ipv6_setsockopt()
540 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
542 if (opt) { in do_ipv6_setsockopt()
543 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
544 txopt_put(opt); in do_ipv6_setsockopt()
977 static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt, in ipv6_getsockopt_sticky() argument
982 if (!opt) in ipv6_getsockopt_sticky()
987 hdr = opt->hopopt; in ipv6_getsockopt_sticky()
990 hdr = opt->dst0opt; in ipv6_getsockopt_sticky()
993 hdr = (struct ipv6_opt_hdr *)opt->srcrt; in ipv6_getsockopt_sticky()
996 hdr = opt->dst1opt; in ipv6_getsockopt_sticky()
1154 struct ipv6_txoptions *opt; in do_ipv6_getsockopt() local
1157 opt = rcu_dereference_protected(np->opt, in do_ipv6_getsockopt()
1159 len = ipv6_getsockopt_sticky(sk, opt, optname, optval, len); in do_ipv6_getsockopt()