home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / ip / trace / tcpdump-2.2.1 / bpf / sunif / if_le.c-sunos4.1.1-patch < prev    next >
Encoding:
Text File  |  1992-01-28  |  2.3 KB  |  89 lines

  1. *** if_le.c    Tue Jan 28 17:10:14 1992
  2. --- if_le.c.bpf    Tue Jan 28 17:14:24 1992
  3. ***************
  4. *** 33,38 ****
  5. --- 33,43 ----
  6.   
  7.   #include <sundev/mbvar.h>
  8.   
  9. + #include "bpfilter.h"
  10. + #if NBPFILTER > 0
  11. + #include <net/bpf.h>
  12. + #endif
  13.   #include <sunif/if_lereg.h>
  14.   #include <sunif/if_levar.h>
  15.   
  16. ***************
  17. *** 258,263 ****
  18. --- 263,272 ----
  19.       /* Do hardware-independent attach stuff. */
  20.       ether_attach(&es->es_if, unit, "le",
  21.           leinit, leioctl, leoutput, lereset);
  22. + #if NBPFILTER > 0
  23. +     bpfattach(&es->es_bpf, &es->es_if, DLT_EN10MB, 
  24. +           sizeof(struct ether_header));
  25. + #endif
  26.       /*
  27.        * attach interrupts and dma vectors
  28.        */
  29. ***************
  30. *** 968,973 ****
  31. --- 977,989 ----
  32.               }
  33.           } while (m = m->m_next);
  34.   
  35. + #if NBPFILTER > 0
  36. +         {
  37. +             struct le_softc *le = &le_softc[unit];
  38. +             if (le->es_bpf)
  39. +                 bpf_mtap(le->es_bpf, m0);
  40. +         }
  41. + #endif
  42.           /*
  43.            * t points to the next free tmd.
  44.            */
  45. ***************
  46. *** 1275,1281 ****
  47.           es->es_if.if_ierrors++;
  48.           return;
  49.       }
  50.       /*
  51.        * Pull packet off interface.  Off is nonzero if packet has
  52.        * trailing header; copy_to_mbufs will then force this header
  53. --- 1291,1323 ----
  54.           es->es_if.if_ierrors++;
  55.           return;
  56.       }
  57. ! #if NBPFILTER > 0
  58. !         /*
  59. !          * If bpf is listening on this interface, let it
  60. !          * see the packet before we pass it up to higher
  61. !      * level protocols.
  62. !      *
  63. !          * Note that BPF doesn't currently (and hopefully never will)
  64. !      * handle trailer-encapsulated packets.  We just ignore them.
  65. !      */
  66. !         if (es->es_bpf && off == 0) {
  67. !                 bpf_tap(es->es_bpf, (u_char *)header, 
  68. !             (u_int)length + sizeof(struct ether_header));
  69. !         /*
  70. !          * If we are in promiscuous mode, we return if this
  71. !          * packet isn't for us.  This prevents NIT from seeing
  72. !          * any promiscuous packets when there is a BPF listener.
  73. !          * The IFF_PROMISC test isn't necessary but saves the
  74. !          * bcmp() calls; it's probably worthwhile.
  75. !          */
  76. !         if ((es->es_if.if_flags & IFF_PROMISC) &&
  77. !             bcmp(header->ether_dhost.ether_addr_octet,
  78. !              es->es_enaddr.ether_addr_octet, 6) != 0 &&
  79. !             bcmp(header->ether_dhost.ether_addr_octet,
  80. !              etherbroadcastaddr.ether_addr_octet, 6) != 0)
  81. !             return;
  82. !     }
  83. ! #endif
  84.       /*
  85.        * Pull packet off interface.  Off is nonzero if packet has
  86.        * trailing header; copy_to_mbufs will then force this header
  87.