• Home
  • Raw
  • Download

Lines Matching refs:optlen

50 	memcpy(iph+sizeof(struct iphdr), opt->__data, opt->optlen);  in ip_options_build()
95 int optlen; in __ip_options_echo() local
99 if (sopt->optlen == 0) in __ip_options_echo()
106 optlen = sptr[sopt->rr+1]; in __ip_options_echo()
108 dopt->rr = dopt->optlen + sizeof(struct iphdr); in __ip_options_echo()
109 memcpy(dptr, sptr+sopt->rr, optlen); in __ip_options_echo()
110 if (sopt->rr_needaddr && soffset <= optlen) { in __ip_options_echo()
111 if (soffset + 3 > optlen) in __ip_options_echo()
116 dptr += optlen; in __ip_options_echo()
117 dopt->optlen += optlen; in __ip_options_echo()
120 optlen = sptr[sopt->ts+1]; in __ip_options_echo()
122 dopt->ts = dopt->optlen + sizeof(struct iphdr); in __ip_options_echo()
123 memcpy(dptr, sptr+sopt->ts, optlen); in __ip_options_echo()
124 if (soffset <= optlen) { in __ip_options_echo()
126 if (soffset + 3 > optlen) in __ip_options_echo()
132 if (soffset + 3 > optlen) in __ip_options_echo()
140 if (soffset + 7 <= optlen) { in __ip_options_echo()
153 dptr += optlen; in __ip_options_echo()
154 dopt->optlen += optlen; in __ip_options_echo()
160 optlen = start[1]; in __ip_options_echo()
163 if (soffset > optlen) in __ip_options_echo()
164 soffset = optlen + 1; in __ip_options_echo()
183 dopt->srr = dopt->optlen + sizeof(struct iphdr); in __ip_options_echo()
184 dopt->optlen += doffset+3; in __ip_options_echo()
189 optlen = sptr[sopt->cipso+1]; in __ip_options_echo()
190 dopt->cipso = dopt->optlen+sizeof(struct iphdr); in __ip_options_echo()
191 memcpy(dptr, sptr+sopt->cipso, optlen); in __ip_options_echo()
192 dptr += optlen; in __ip_options_echo()
193 dopt->optlen += optlen; in __ip_options_echo()
195 while (dopt->optlen & 3) { in __ip_options_echo()
197 dopt->optlen++; in __ip_options_echo()
212 int l = opt->optlen; in ip_options_fragment()
213 int optlen; in ip_options_fragment() local
224 optlen = optptr[1]; in ip_options_fragment()
225 if (optlen < 2 || optlen > l) in ip_options_fragment()
228 memset(optptr, IPOPT_NOOP, optlen); in ip_options_fragment()
229 l -= optlen; in ip_options_fragment()
230 optptr += optlen; in ip_options_fragment()
263 int optlen, l; in __ip_options_compile() local
272 for (l = opt->optlen; l > 0; ) { in __ip_options_compile()
291 optlen = optptr[1]; in __ip_options_compile()
292 if (optlen < 2 || optlen > l) { in __ip_options_compile()
299 if (optlen < 3) { in __ip_options_compile()
313 if (optptr[2] != 4 || optlen < 7 || ((optlen-3) & 3)) { in __ip_options_compile()
318 if (optlen > 7) in __ip_options_compile()
319 memmove(&optptr[3], &optptr[7], optlen-7); in __ip_options_compile()
329 if (optlen < 3) { in __ip_options_compile()
337 if (optptr[2] <= optlen) { in __ip_options_compile()
338 if (optptr[2]+3 > optlen) { in __ip_options_compile()
357 if (optlen < 4) { in __ip_options_compile()
365 if (optptr[2] <= optlen) { in __ip_options_compile()
367 if (optptr[2]+3 > optlen) { in __ip_options_compile()
379 if (optptr[2]+7 > optlen) { in __ip_options_compile()
393 if (optptr[2]+7 > optlen) { in __ip_options_compile()
436 if (optlen < 4) { in __ip_options_compile()
463 l -= optlen; in __ip_options_compile()
464 optptr += optlen; in __ip_options_compile()
522 static struct ip_options_rcu *ip_options_get_alloc(const int optlen) in ip_options_get_alloc() argument
524 return kzalloc(sizeof(struct ip_options_rcu) + ((optlen + 3) & ~3), in ip_options_get_alloc()
529 struct ip_options_rcu *opt, int optlen) in ip_options_get_finish() argument
531 while (optlen & 3) in ip_options_get_finish()
532 opt->opt.__data[optlen++] = IPOPT_END; in ip_options_get_finish()
533 opt->opt.optlen = optlen; in ip_options_get_finish()
534 if (optlen && ip_options_compile(net, &opt->opt, NULL)) { in ip_options_get_finish()
544 unsigned char __user *data, int optlen) in ip_options_get_from_user() argument
546 struct ip_options_rcu *opt = ip_options_get_alloc(optlen); in ip_options_get_from_user()
550 if (optlen && copy_from_user(opt->opt.__data, data, optlen)) { in ip_options_get_from_user()
554 return ip_options_get_finish(net, optp, opt, optlen); in ip_options_get_from_user()
558 unsigned char *data, int optlen) in ip_options_get() argument
560 struct ip_options_rcu *opt = ip_options_get_alloc(optlen); in ip_options_get()
564 if (optlen) in ip_options_get()
565 memcpy(opt->opt.__data, data, optlen); in ip_options_get()
566 return ip_options_get_finish(net, optp, opt, optlen); in ip_options_get()