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

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

Diff for /src/sys/netinet6/ip6_input.c between version 1.85 and 1.88

version 1.85, 2006/05/05 00:03:22 version 1.88, 2006/05/25 21:32:47
Line 410  ip6_input(m)
Line 410  ip6_input(m)
          * dst are the loopback address and the receiving interface           * dst are the loopback address and the receiving interface
          * is not loopback.           * is not loopback.
          */           */
           if (__predict_false(
               m_makewritable(&m, 0, sizeof(struct ip6_hdr), M_DONTWAIT)))
                   goto bad;
           ip6 = mtod(m, struct ip6_hdr *);
         if (in6_clearscope(&ip6->ip6_src) || in6_clearscope(&ip6->ip6_dst)) {          if (in6_clearscope(&ip6->ip6_src) || in6_clearscope(&ip6->ip6_dst)) {
                 ip6stat.ip6s_badscope++; /* XXX */                  ip6stat.ip6s_badscope++; /* XXX */
                 goto bad;                  goto bad;
Line 1048  ip6_savecontrol(in6p, mp, ip6, m)
Line 1052  ip6_savecontrol(in6p, mp, ip6, m)
                         mp = &(*mp)->m_next;                          mp = &(*mp)->m_next;
         }          }
 #endif  #endif
   
           /* some OSes call this logic with IPv4 packet, for SO_TIMESTAMP */
           if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION)
                   return;
   
         /* RFC 2292 sec. 5 */          /* RFC 2292 sec. 5 */
         if ((in6p->in6p_flags & IN6P_PKTINFO) != 0) {          if ((in6p->in6p_flags & IN6P_PKTINFO) != 0) {
                 struct in6_pktinfo pi6;                  struct in6_pktinfo pi6;
Line 1149  ip6_savecontrol(in6p, mp, ip6, m)
Line 1158  ip6_savecontrol(in6p, mp, ip6, m)
                  * Note that the order of the headers remains in                   * Note that the order of the headers remains in
                  * the chain of ancillary data.                   * the chain of ancillary data.
                  */                   */
                 while (1) {     /* is explicit loop prevention necessary? */                  for (;;) {      /* is explicit loop prevention necessary? */
                         struct ip6_ext *ip6e = NULL;                          struct ip6_ext *ip6e = NULL;
                         int elen;                          int elen;
                         struct mbuf *ext = NULL;                          struct mbuf *ext = NULL;
Line 1479  ip6_lasthdr(m, off, proto, nxtp)
Line 1488  ip6_lasthdr(m, off, proto, nxtp)
                 nxt = -1;                  nxt = -1;
                 nxtp = &nxt;                  nxtp = &nxt;
         }          }
         while (1) {          for (;;) {
                 newoff = ip6_nexthdr(m, off, proto, nxtp);                  newoff = ip6_nexthdr(m, off, proto, nxtp);
                 if (newoff < 0)                  if (newoff < 0)
                         return off;                          return off;

Legend:
Removed from v.1.85  
changed lines
  Added in v.1.88

CVSweb <webmaster@jp.NetBSD.org>