<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>Hi.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>I have no idea why your application does not "respond" to 
directed packets. Have&nbsp; you tried using Windump or Ethereal and see if you 
actually receive those&nbsp;directed packets?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=2>Regarding the MAC issue in V3.1,&nbsp;there is no 
guarantee</FONT>&nbsp;<FONT size=2>that a MAC address is associated with a 
device (this is particularly true for the GenericDialupAdapter, that was added 
in WinPcap v3.1), that's the reason for the NULL pointer.</FONT></DIV>
<DIV><FONT size=2></FONT>&nbsp;</DIV>
<DIV><FONT size=2>Hope it helps</FONT></DIV>
<DIV><FONT size=2>GV</FONT></DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=ewan.macpherson@frontiernet.net 
  href="mailto:ewan.macpherson@frontiernet.net">Ewan MacPherson</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=winpcap-users@winpcap.org 
  href="mailto:winpcap-users@winpcap.org">winpcap-users@winpcap.org</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Sunday, August 28, 2005 7:25 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> [Winpcap-users] Missing directed 
  packets in VC++6</DIV>
  <DIV><FONT size=2></FONT><FONT size=2></FONT><BR></DIV>
  <DIV><FONT face=Arial size=2>I am using VC++ 6.0 to create an app. which uses 
  Winpcap. If I use the app on the computer which contains the VC++ IDE etc. the 
  app works fine. I have win2000.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>If, however, I install&nbsp;the app.&nbsp;on 
  another (almost identical) computer on which I installed winpcap, the app. 
  only responds to broadcast packets and not those directed to its MAC address. 
  Yes, I changed the MAC address when installing in the new PC.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>All this is using Winpcap v3.0. When I uninstall 
  v3.0 and install v3.1 a&nbsp;different strange thing occurs. In both the PC 
  which "works" and the one which "doesn't work" I get a NULL pointer in 
  "mac_ptr = get_mac_addr(adap);".</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>When I go back to v3.0 I get the previous 
  condition.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Thank you for any help you can give.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial size=2>Here is the relevant code:-</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial 
  size=2>/////////////////////////////////////////////////////////////////////////////<BR>// 
  pfx is defined in the class header file</FONT></DIV>
  <DIV><FONT size=2></FONT>&nbsp;</DIV><FONT face=Arial size=2>
  <DIV>pcap_if_t&nbsp;&nbsp;&nbsp;&nbsp; 
  *d;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  mac[6];<BR>unsigned char 
  *packet;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // this is the 
  pointer<BR>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  apacket[MAXBYTES];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // this is the actual 
  packet<BR>int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  NewCardPending;<BR>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  errbuf[PCAP_ERRBUF_SIZE+1];<BR>char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  MACaddr[6];<BR><BR>int 
  pfx/**/MainProgram(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // from the start button to here<BR>{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp; 
  pcap_if_t&nbsp;&nbsp;&nbsp;&nbsp; *alldevs;<BR>&nbsp; 
  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  *mac_ptr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // Pointer to returned MAC address<BR>&nbsp; 
  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mac2[6];<BR>&nbsp; 
  ADAPTER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *adap;<BR>&nbsp; 
  BOOL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bummer;<BR>&nbsp; 
  FILE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *fp;<BR>&nbsp; 
  char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check[128];</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; /* Ethernet Initialization */<BR>&nbsp; fp = fopen("MACADDR.INI", 
  "r");</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; if (fp == NULL)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; 
  m_Message.SetWindowText(CString("No MAC File"));<BR>&nbsp;&nbsp;&nbsp; return 
  -1;<BR>&nbsp; }</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; fscanf(fp, "%s %x %x %x %x %x 
  %x",<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  check,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[0],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // mac address of 
  adapter<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[1],&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // get from 
  file<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[2],<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[3],<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[4],<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  &amp;mac[5]);</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; if ((check[0] != '*') || (check[1] != 'M') || (check[4] != 
  '*'))<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; m_Message.SetWindowText(CString("Bad 
  MAC File"));<BR>&nbsp;&nbsp;&nbsp; return -1;<BR>&nbsp; }</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; fclose(fp);</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; /* Retrieve the ethernet interfaces list */<BR>&nbsp; if 
  (pcap_findalldevs(&amp;alldevs, errbuf) == -1)<BR>&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp; m_Message.SetWindowText(CString("Cannot find Ethernet 
  Adapters"));<BR>&nbsp;&nbsp;&nbsp; 
  pcap_freealldevs(alldevs);<BR>&nbsp;&nbsp;&nbsp; return -1;<BR>&nbsp; }</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; /* Scan the retrieved list */<BR>&nbsp; for(d = alldevs; d != 0; d 
  = d-&gt;next)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; adap = 
  PacketOpenAdapter(d-&gt;name);&nbsp;&nbsp;&nbsp; // Initialize the 
  pointer</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; mac_ptr = get_mac_addr(adap);</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; if (mac_ptr == NULL)<BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_Message.SetWindowText(CString("NULL Mac 
  pointer"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  pcap_freealldevs(alldevs);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 
  -1;<BR>&nbsp;&nbsp;&nbsp; }</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; memcpy(mac2, mac_ptr, 6);</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; bummer = false;</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 6; 
  i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (mac[i] != 
  mac2[i])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bummer = true;</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp;&nbsp;&nbsp; if (bummer == false)<BR>&nbsp;&nbsp;&nbsp; 
  {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_Message.SetWindowText(CString("Found 
  Ethernet 
  Adapter"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  pfx/**/DoMainLoop();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 
  never return<BR>&nbsp;&nbsp;&nbsp; }&nbsp; <BR>&nbsp; 
  }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // try next device</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; pcap_freealldevs(alldevs);<BR>&nbsp; 
  m_Message.SetWindowText(CString("No Matching Ethernet Adapter"));</DIV>
  <DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
  <DIV>&nbsp; return 1;<BR>}<BR></FONT></DIV>
  <P></P><FONT face=Arial size=2></FONT>
  <HR>

  <P></P>_______________________________________________<BR>Winpcap-users 
  mailing 
  list<BR>Winpcap-users@winpcap.org<BR>https://www.winpcap.org/mailman/listinfo/winpcap-users<BR></BLOCKQUOTE></BODY></HTML>