• 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 defs:optptr

221 	unsigned char *optptr = skb_network_header(skb) + sizeof(struct iphdr);
227 switch (*optptr) {
232 optptr++;
235 optlen = optptr[1];
238 if (!IPOPT_COPIED(*optptr))
239 memset(optptr, IPOPT_NOOP, optlen);
241 optptr += optlen;
261 unsigned char * optptr;
270 optptr = iph + sizeof(struct iphdr);
273 optptr = opt->is_data ? opt->__data :
275 iph = optptr - sizeof(struct iphdr);
279 switch (*optptr) {
281 for (optptr++, l--; l>0; optptr++, l--) {
282 if (*optptr != IPOPT_END) {
283 *optptr = IPOPT_END;
290 optptr++;
293 optlen = optptr[1];
295 pp_ptr = optptr;
298 switch (*optptr) {
302 pp_ptr = optptr + 1;
305 if (optptr[2] < 4) {
306 pp_ptr = optptr + 2;
311 pp_ptr = optptr;
315 if (optptr[2] != 4 || optlen < 7 || ((optlen-3) & 3)) {
316 pp_ptr = optptr + 1;
319 memcpy(&opt->faddr, &optptr[3], 4);
321 memmove(&optptr[3], &optptr[7], optlen-7);
323 opt->is_strictroute = (optptr[0] == IPOPT_SSRR);
324 opt->srr = optptr - iph;
328 pp_ptr = optptr;
332 pp_ptr = optptr + 1;
335 if (optptr[2] < 4) {
336 pp_ptr = optptr + 2;
339 if (optptr[2] <= optlen) {
340 if (optptr[2]+3 > optlen) {
341 pp_ptr = optptr + 2;
345 memcpy(&optptr[optptr[2]-1], &rt->rt_spec_dst, 4);
348 optptr[2] += 4;
351 opt->rr = optptr - iph;
355 pp_ptr = optptr;
359 pp_ptr = optptr + 1;
362 if (optptr[2] < 5) {
363 pp_ptr = optptr + 2;
366 if (optptr[2] <= optlen) {
368 if (optptr[2]+3 > optptr[1]) {
369 pp_ptr = optptr + 2;
372 switch (optptr[3]&0xF) {
374 opt->ts = optptr - iph;
376 timeptr = (__be32*)&optptr[optptr[2]-1];
378 optptr[2] += 4;
381 if (optptr[2]+7 > optptr[1]) {
382 pp_ptr = optptr + 2;
385 opt->ts = optptr - iph;
387 memcpy(&optptr[optptr[2]-1], &rt->rt_spec_dst, 4);
388 timeptr = (__be32*)&optptr[optptr[2]+3];
392 optptr[2] += 8;
395 if (optptr[2]+7 > optptr[1]) {
396 pp_ptr = optptr + 2;
399 opt->ts = optptr - iph;
402 memcpy(&addr, &optptr[optptr[2]-1], 4);
406 timeptr = (__be32*)&optptr[optptr[2]+3];
409 optptr[2] += 8;
413 pp_ptr = optptr + 3;
427 unsigned overflow = optptr[3]>>4;
429 pp_ptr = optptr + 3;
432 opt->ts = optptr - iph;
434 optptr[3] = (optptr[3]&0xF)|((overflow+1)<<4);
441 pp_ptr = optptr + 1;
444 if (optptr[2] == 0 && optptr[3] == 0)
445 opt->router_alert = optptr - iph;
449 pp_ptr = optptr;
452 opt->cipso = optptr - iph;
453 if (cipso_v4_validate(&optptr)) {
454 pp_ptr = optptr;
462 pp_ptr = optptr;
468 optptr += optlen;
490 unsigned char * optptr = opt->__data+opt->srr-sizeof(struct iphdr);
491 memmove(optptr+7, optptr+3, optptr[1]-7);
492 memcpy(optptr+3, &opt->faddr, 4);
495 unsigned char * optptr = opt->__data+opt->rr-sizeof(struct iphdr);
496 optptr[2] -= 4;
497 memset(&optptr[optptr[2]-1], 0, 4);
500 unsigned char * optptr = opt->__data+opt->ts-sizeof(struct iphdr);
502 optptr[2] -= 4;
503 memset(&optptr[optptr[2]-1], 0, 4);
504 if ((optptr[3]&0xF) == IPOPT_TS_PRESPEC)
505 optptr[2] -= 4;
508 optptr[2] -= 4;
509 memset(&optptr[optptr[2]-1], 0, 4);
566 unsigned char * optptr;
571 optptr = (unsigned char *)raw + opt->rr;
572 ip_rt_get_source(&optptr[optptr[2]-5], rt);
578 optptr = raw + opt->srr;
580 for ( srrptr=optptr[2], srrspace = optptr[1];
586 if (memcmp(&rt->rt_dst, &optptr[srrptr-1], 4) == 0)
591 ip_rt_get_source(&optptr[srrptr-1], rt);
593 optptr[2] = srrptr+4;
597 optptr = raw + opt->ts;
598 ip_rt_get_source(&optptr[optptr[2]-9], rt);
614 unsigned char *optptr = skb_network_header(skb) + opt->srr;
633 for (srrptr=optptr[2], srrspace = optptr[1]; srrptr <= srrspace; srrptr += 4) {
638 memcpy(&nexthop, &optptr[srrptr-1], 4);
653 memcpy(&iph->daddr, &optptr[srrptr-1], 4);