<!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.2800.1515" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<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>&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>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; /* Ethernet Initialization */<BR>&nbsp; fp = fopen("MACADDR.INI", 
"r");</DIV>
<DIV>&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>&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>&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>&nbsp;</DIV>
<DIV>&nbsp; fclose(fp);</DIV>
<DIV>&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>&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>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; mac_ptr = get_mac_addr(adap);</DIV>
<DIV>&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>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; memcpy(mac2, mac_ptr, 6);</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp; bummer = false;</DIV>
<DIV>&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>&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>&nbsp;</DIV>
<DIV>&nbsp; pcap_freealldevs(alldevs);<BR>&nbsp; 
m_Message.SetWindowText(CString("No Matching Ethernet Adapter"));</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; return 1;<BR>}<BR></FONT></DIV></BODY></HTML>