Print this page
*** NO COMMENTS ***

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/ip/ip.c
          +++ new/usr/src/uts/common/inet/ip/ip.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
  24   24   * Copyright (c) 1990 Mentat Inc.
       25 + * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
  25   26   */
  26   27  
  27   28  #include <sys/types.h>
  28   29  #include <sys/stream.h>
  29   30  #include <sys/dlpi.h>
  30   31  #include <sys/stropts.h>
  31   32  #include <sys/sysmacros.h>
  32   33  #include <sys/strsubr.h>
  33   34  #include <sys/strlog.h>
  34   35  #include <sys/strsun.h>
↓ open down ↓ 7790 lines elided ↑ open up ↑
7825 7826              - sizeof (struct ether_header));
7826 7827  
7827 7828          /*
7828 7829           * Make sure the interface is an ethernet type, since we don't
7829 7830           * know the header format for anything but Ethernet. Also make
7830 7831           * sure we are pointing correctly above db_base.
7831 7832           */
7832 7833          if (ill->ill_type != IFT_ETHER)
7833 7834                  return;
7834 7835  
     7836 +        /*
     7837 +         * PPP (including PPPoE) interfaces lie about being an ethernet, but
     7838 +         * have other clues to indicate we should just bail now.  We exploit
     7839 +         * the 0 broadcast address length.
     7840 +         *
     7841 +         * XXX KEBE ASKS --> what about IP multicast packets?
     7842 +         */
     7843 +        if (ill->ill_bcast_addr_length == 0)
     7844 +                return;
     7845 +
7835 7846  retry:
7836 7847          if ((uchar_t *)pether < mp->b_datap->db_base)
7837 7848                  return;
7838 7849  
7839 7850          /* Is there a VLAN tag? */
7840 7851          if (ill->ill_isv6) {
7841 7852                  if (pether->ether_type != htons(ETHERTYPE_IPV6)) {
7842 7853                          pether = (struct ether_header *)((char *)pether - 4);
7843 7854                          goto retry;
7844 7855                  }
↓ open down ↓ 7414 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX