• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/net/ipv4/

Lines Matching refs:optlen

46 	memcpy(iph+sizeof(struct iphdr), opt->__data, opt->optlen);
93 int optlen;
102 if (sopt->optlen == 0) {
103 dopt->optlen = 0;
116 optlen = sptr[sopt->rr+1];
118 dopt->rr = dopt->optlen + sizeof(struct iphdr);
119 memcpy(dptr, sptr+sopt->rr, optlen);
120 if (sopt->rr_needaddr && soffset <= optlen) {
121 if (soffset + 3 > optlen)
126 dptr += optlen;
127 dopt->optlen += optlen;
130 optlen = sptr[sopt->ts+1];
132 dopt->ts = dopt->optlen + sizeof(struct iphdr);
133 memcpy(dptr, sptr+sopt->ts, optlen);
134 if (soffset <= optlen) {
136 if (soffset + 3 > optlen)
142 if (soffset + 3 > optlen)
150 if (soffset + 8 <= optlen) {
163 dptr += optlen;
164 dopt->optlen += optlen;
170 optlen = start[1];
173 if (soffset > optlen)
174 soffset = optlen + 1;
194 dopt->srr = dopt->optlen + sizeof(struct iphdr);
195 dopt->optlen += doffset+3;
200 optlen = sptr[sopt->cipso+1];
201 dopt->cipso = dopt->optlen+sizeof(struct iphdr);
202 memcpy(dptr, sptr+sopt->cipso, optlen);
203 dptr += optlen;
204 dopt->optlen += optlen;
206 while (dopt->optlen & 3) {
208 dopt->optlen++;
223 int l = opt->optlen;
224 int optlen;
235 optlen = optptr[1];
236 if (optlen<2 || optlen>l)
239 memset(optptr, IPOPT_NOOP, optlen);
240 l -= optlen;
241 optptr += optlen;
262 int optlen;
269 opt->optlen = ((struct iphdr *)iph)->ihl*4 - sizeof(struct iphdr);
278 for (l = opt->optlen; l > 0; ) {
293 optlen = optptr[1];
294 if (optlen<2 || optlen>l) {
301 if (optlen < 3) {
315 if (optptr[2] != 4 || optlen < 7 || ((optlen-3) & 3)) {
320 if (optlen > 7)
321 memmove(&optptr[3], &optptr[7], optlen-7);
331 if (optlen < 3) {
339 if (optptr[2] <= optlen) {
340 if (optptr[2]+3 > optlen) {
358 if (optlen < 4) {
366 if (optptr[2] <= optlen) {
440 if (optlen < 4) {
467 l -= optlen;
468 optptr += optlen;
514 static struct ip_options *ip_options_get_alloc(const int optlen)
516 struct ip_options *opt = kmalloc(sizeof(*opt) + ((optlen + 3) & ~3),
524 struct ip_options *opt, int optlen)
526 while (optlen & 3)
527 opt->__data[optlen++] = IPOPT_END;
528 opt->optlen = optlen;
530 if (optlen && ip_options_compile(opt, NULL)) {
539 int ip_options_get_from_user(struct ip_options **optp, unsigned char __user *data, int optlen)
541 struct ip_options *opt = ip_options_get_alloc(optlen);
545 if (optlen && copy_from_user(opt->__data, data, optlen)) {
549 return ip_options_get_finish(optp, opt, optlen);
552 int ip_options_get(struct ip_options **optp, unsigned char *data, int optlen)
554 struct ip_options *opt = ip_options_get_alloc(optlen);
558 if (optlen)
559 memcpy(opt->__data, data, optlen);
560 return ip_options_get_finish(optp, opt, optlen);