[Winpcap-users] Missing directed packets in VC++6
Gianluca Varenni
gianluca.varenni at cacetech.com
Mon Aug 29 16:22:44 GMT 2005
Hi.
I have no idea why your application does not "respond" to directed packets. Have you tried using Windump or Ethereal and see if you actually receive those directed packets?
Regarding the MAC issue in V3.1, there is no guarantee 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.
Hope it helps
GV
----- Original Message -----
From: Ewan MacPherson
To: winpcap-users at winpcap.org
Sent: Sunday, August 28, 2005 7:25 PM
Subject: [Winpcap-users] Missing directed packets in VC++6
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.
If, however, I install the app. 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.
All this is using Winpcap v3.0. When I uninstall v3.0 and install v3.1 a 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);".
When I go back to v3.0 I get the previous condition.
Thank you for any help you can give.
Here is the relevant code:-
/////////////////////////////////////////////////////////////////////////////
// pfx is defined in the class header file
pcap_if_t *d;
char mac[6];
unsigned char *packet; // this is the pointer
char apacket[MAXBYTES]; // this is the actual packet
int NewCardPending;
char errbuf[PCAP_ERRBUF_SIZE+1];
char MACaddr[6];
int pfx/**/MainProgram(void) // from the start button to here
{
pcap_if_t *alldevs;
char *mac_ptr; // Pointer to returned MAC address
char mac2[6];
ADAPTER *adap;
BOOL bummer;
FILE *fp;
char check[128];
/* Ethernet Initialization */
fp = fopen("MACADDR.INI", "r");
if (fp == NULL)
{
m_Message.SetWindowText(CString("No MAC File"));
return -1;
}
fscanf(fp, "%s %x %x %x %x %x %x",
check,
&mac[0], // mac address of adapter
&mac[1], // get from file
&mac[2],
&mac[3],
&mac[4],
&mac[5]);
if ((check[0] != '*') || (check[1] != 'M') || (check[4] != '*'))
{
m_Message.SetWindowText(CString("Bad MAC File"));
return -1;
}
fclose(fp);
/* Retrieve the ethernet interfaces list */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
m_Message.SetWindowText(CString("Cannot find Ethernet Adapters"));
pcap_freealldevs(alldevs);
return -1;
}
/* Scan the retrieved list */
for(d = alldevs; d != 0; d = d->next)
{
adap = PacketOpenAdapter(d->name); // Initialize the pointer
mac_ptr = get_mac_addr(adap);
if (mac_ptr == NULL)
{
m_Message.SetWindowText(CString("NULL Mac pointer"));
pcap_freealldevs(alldevs);
return -1;
}
memcpy(mac2, mac_ptr, 6);
bummer = false;
for (int i = 0; i < 6; i++)
if (mac[i] != mac2[i])
bummer = true;
if (bummer == false)
{
m_Message.SetWindowText(CString("Found Ethernet Adapter"));
pfx/**/DoMainLoop(); // never return
}
} // try next device
pcap_freealldevs(alldevs);
m_Message.SetWindowText(CString("No Matching Ethernet Adapter"));
return 1;
}
------------------------------------------------------------------------------
_______________________________________________
Winpcap-users mailing list
Winpcap-users at winpcap.org
https://www.winpcap.org/mailman/listinfo/winpcap-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winpcap.org/pipermail/winpcap-users/attachments/20050829/c27b382a/attachment.htm
More information about the Winpcap-users
mailing list