[BACK]Return to ip_input.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / netinet

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/netinet/ip_input.c between version 1.367 and 1.368

version 1.367, 2018/02/05 13:34:20 version 1.368, 2018/02/05 13:52:39
Line 873  ip_dooptions(struct mbuf *m)
Line 873  ip_dooptions(struct mbuf *m)
         struct ip_timestamp *ipt;          struct ip_timestamp *ipt;
         struct in_ifaddr *ia;          struct in_ifaddr *ia;
         int opt, optlen, cnt, off, code, type = ICMP_PARAMPROB, forward = 0;          int opt, optlen, cnt, off, code, type = ICMP_PARAMPROB, forward = 0;
           int lsrr_present, ssrr_present, rr_present, ts_present;
         struct in_addr dst;          struct in_addr dst;
         n_time ntime;          n_time ntime;
         struct ifaddr *ifa = NULL;          struct ifaddr *ifa = NULL;
         int s;          int s;
   
           lsrr_present = 0;
           ssrr_present = 0;
           rr_present = 0;
           ts_present = 0;
   
         dst = ip->ip_dst;          dst = ip->ip_dst;
         cp = (u_char *)(ip + 1);          cp = (u_char *)(ip + 1);
         cnt = (ip->ip_hl << 2) - sizeof(struct ip);          cnt = (ip->ip_hl << 2) - sizeof(struct ip);
Line 925  ip_dooptions(struct mbuf *m)
Line 931  ip_dooptions(struct mbuf *m)
                                 code = ICMP_UNREACH_NET_PROHIB;                                  code = ICMP_UNREACH_NET_PROHIB;
                                 goto bad;                                  goto bad;
                         }                          }
                           if (opt == IPOPT_LSRR) {
                                   if (lsrr_present++) {
                                           code = &cp[IPOPT_OPTVAL] - (u_char *)ip;
                                           goto bad;
                                   }
                           } else {
                                   if (ssrr_present++) {
                                           code = &cp[IPOPT_OPTVAL] - (u_char *)ip;
                                           goto bad;
                                   }
                           }
                         if (optlen < IPOPT_OFFSET + sizeof(*cp)) {                          if (optlen < IPOPT_OFFSET + sizeof(*cp)) {
                                 code = &cp[IPOPT_OLEN] - (u_char *)ip;                                  code = &cp[IPOPT_OLEN] - (u_char *)ip;
                                 goto bad;                                  goto bad;
Line 999  ip_dooptions(struct mbuf *m)
Line 1016  ip_dooptions(struct mbuf *m)
                             .sin_family = AF_INET,                              .sin_family = AF_INET,
                         };                          };
   
                           if (rr_present++) {
                                   code = &cp[IPOPT_OPTVAL] - (u_char *)ip;
                                   goto bad;
                           }
                         if (optlen < IPOPT_OFFSET + sizeof(*cp)) {                          if (optlen < IPOPT_OFFSET + sizeof(*cp)) {
                                 code = &cp[IPOPT_OLEN] - (u_char *)ip;                                  code = &cp[IPOPT_OLEN] - (u_char *)ip;
                                 goto bad;                                  goto bad;
Line 1040  ip_dooptions(struct mbuf *m)
Line 1061  ip_dooptions(struct mbuf *m)
                 case IPOPT_TS:                  case IPOPT_TS:
                         code = cp - (u_char *)ip;                          code = cp - (u_char *)ip;
                         ipt = (struct ip_timestamp *)cp;                          ipt = (struct ip_timestamp *)cp;
                           if (ts_present++) {
                                   code = &cp[IPOPT_OPTVAL] - (u_char *)ip;
                                   goto bad;
                           }
                         if (ipt->ipt_len < 4 || ipt->ipt_len > 40) {                          if (ipt->ipt_len < 4 || ipt->ipt_len > 40) {
                                 code = (u_char *)&ipt->ipt_len - (u_char *)ip;                                  code = (u_char *)&ipt->ipt_len - (u_char *)ip;
                                 goto bad;                                  goto bad;

Legend:
Removed from v.1.367  
changed lines
  Added in v.1.368

CVSweb <webmaster@jp.NetBSD.org>