Ethereal-dev: Re: [Ethereal-dev] Re: Subject: [Ethereal-users] Undefined struct 'sockaddr_stor

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Loris Degioanni <loris.degioanni@xxxxxxxxx>
Date: Wed, 10 Aug 2005 01:28:44 -0700
Ulf,
the dependence on the platform SDK has been introduced, if I remember well, in the first alpha of 3.1, when we added the ability to return IPv6 addresses for the datected adapters. The PacketGetNetInfoEx() function of packet.dll returns these addresses to the calling application in an application-allocated array of struct sockaddr_storage, and therefore the application needs the definition of that structure. If I remember well, wpcap has a different approach: it provides storage for addresses in the list created by pcap_findalldevs, therefore the application can use a normal struct sockaddr and ignore the address if it doesn't understand IPv6. This is the reason, I think, why we don't document the dependence on the platform SDK in the developer's pack: wpcap-based apps *should* not be dependent on the platform SDK (I may be wrong, I didn't try without it recently), and the developer's pack *is* for wpcap-based apps.

The platform SDK is freely available on the internet (just google "platform SDK"), and in a general way it's suggested when developing networking applications for Windows. BUT, since last version, MS decided to make it incompatible with Visual Studio 6, and therefore you are forced to have VS.NET or better to for the definition of struct sockaddr_storage.
Or define it on your own somewhere.

Loris


Ulf Lamping wrote:
Hi Ross!

I've found some time to install the WpdPack_3_1.zip and ran into the same problem than you.

The problem is: the file Packet32.h shipped with WpdPack's version 3.1 is now using "struct sockaddr_storage" which is not part of the Win32 API but part of the Windows "Platform SDK", which is not part of MSVC (and must be installed). The platform SDK contains more recent implementations, like this struct which is used for IP V6 addressing.

See: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/sockaddr_storage_2.asp for details of this struct.

So the solution for now: install the Platform SDK (didn't tried myself) or use the WpdPack 3.0 for now.


I've CC this to the WinPcap developer list if they are aware of this and what they suggest to do about it.

At least, I didn't found any hints that the Platform SDK is required if you want to use Packet32.h in their documentation ...

The SDK is only mentioned to compile the WinPcap drivers itself: http://www.winpcap.org/docs/docs31/html/group__compilation.html

Regards, ULFL

______________________________________________________________
Verschicken Sie romantische, coole und witzige Bilder per SMS!
Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193

_______________________________________________
Ethereal-dev mailing list
Ethereal-dev@xxxxxxxxxxxx
http://www.ethereal.com/mailman/listinfo/ethereal-dev