Lines Matching refs:opt
101 struct ipv6_txoptions *opt) in ipv6_update_options() argument
104 if (opt && in ipv6_update_options()
108 icsk->icsk_ext_hdr_len = opt->opt_flen + opt->opt_nflen; in ipv6_update_options()
112 opt = xchg((__force struct ipv6_txoptions **)&inet6_sk(sk)->opt, in ipv6_update_options()
113 opt); in ipv6_update_options()
116 return opt; in ipv6_update_options()
173 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
234 opt = xchg((__force struct ipv6_txoptions **)&np->opt, in do_ipv6_setsockopt()
236 if (opt) { in do_ipv6_setsockopt()
237 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
238 txopt_put(opt); in do_ipv6_setsockopt()
398 struct ipv6_txoptions *opt; in do_ipv6_setsockopt() local
428 opt = rcu_dereference_protected(np->opt, in do_ipv6_setsockopt()
430 opt = ipv6_renew_options(sk, opt, optname, new); in do_ipv6_setsockopt()
432 if (IS_ERR(opt)) { in do_ipv6_setsockopt()
433 retv = PTR_ERR(opt); in do_ipv6_setsockopt()
439 if (optname == IPV6_RTHDR && opt && opt->srcrt) { in do_ipv6_setsockopt()
440 struct ipv6_rt_hdr *rthdr = opt->srcrt; in do_ipv6_setsockopt()
453 opt->srcrt; in do_ipv6_setsockopt()
465 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
467 if (opt) { in do_ipv6_setsockopt()
468 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
469 txopt_put(opt); in do_ipv6_setsockopt()
498 struct ipv6_txoptions *opt = NULL; in do_ipv6_setsockopt() local
517 opt = sock_kmalloc(sk, sizeof(*opt) + optlen, GFP_KERNEL); in do_ipv6_setsockopt()
519 if (!opt) in do_ipv6_setsockopt()
522 memset(opt, 0, sizeof(*opt)); in do_ipv6_setsockopt()
523 refcount_set(&opt->refcnt, 1); in do_ipv6_setsockopt()
524 opt->tot_len = sizeof(*opt) + optlen; in do_ipv6_setsockopt()
526 if (copy_from_user(opt+1, optval, optlen)) in do_ipv6_setsockopt()
530 msg.msg_control = (void *)(opt+1); in do_ipv6_setsockopt()
531 ipc6.opt = opt; in do_ipv6_setsockopt()
538 opt = ipv6_update_options(sk, opt); in do_ipv6_setsockopt()
540 if (opt) { in do_ipv6_setsockopt()
541 atomic_sub(opt->tot_len, &sk->sk_omem_alloc); in do_ipv6_setsockopt()
542 txopt_put(opt); in do_ipv6_setsockopt()
988 static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt, in ipv6_getsockopt_sticky() argument
993 if (!opt) in ipv6_getsockopt_sticky()
998 hdr = opt->hopopt; in ipv6_getsockopt_sticky()
1001 hdr = opt->dst0opt; in ipv6_getsockopt_sticky()
1004 hdr = (struct ipv6_opt_hdr *)opt->srcrt; in ipv6_getsockopt_sticky()
1007 hdr = opt->dst1opt; in ipv6_getsockopt_sticky()
1165 struct ipv6_txoptions *opt; in do_ipv6_getsockopt() local
1168 opt = rcu_dereference_protected(np->opt, in do_ipv6_getsockopt()
1170 len = ipv6_getsockopt_sticky(sk, opt, optname, optval, len); in do_ipv6_getsockopt()