[Winpcap-users] Various fixups
deadchicken
deadchicken at gmail.com
Thu Jan 12 22:03:54 GMT 2006
Attached is the unified diff and the missing file which should end up as:
winpcap\wpcap\libpcap\Win32\Src\gai_strerror.c
Gianluca Varenni wrote:
> Hi
>
> I'll try to apply the patches during the weekend.
>
> Next time, I suggest you to use "diff -U" (unified diff), which gives a
> bit of context in the diff and helps patching the files when they have
> been slightly modified, perform a single diff for all the modifications
> (diff -Ur), and send it as an attachment...
> Basically I'll need to copy and paste every single diff you sent into a
> text file, and apply it to the proper destination file.
>
> In any case, don't worry, we all learn how to use these (nasty?) tools
> day by day :-))
>
> Have a nice day
> GV
>
> ----- Original Message ----- From: "deadchicken" <deadchicken at gmail.com>
> To: <winpcap-users at winpcap.org>
> Sent: Tuesday, January 10, 2006 8:32 PM
> Subject: Re: [Winpcap-users] Various fixups
>
>
>> Hopefully this will work better than the last time...
>>
>> -----
>>
>> The following is an update of my attempts to get WinPcap and it's
>> examples to
>> compile under MingW. These changes were applied to a fresh copy of
>> wpcapsrc_3_2_alpha1 and then diff'd against the original. Testing
>> involved
>> simply compiling the library, then compiling the packet utility I've been
>> working on, then running it to see if it worked. I have little experience
>> with submitting changes to community edited source code so please bear
>> with me.
>>
>> The first diff adjusts one of the makefiles by adding HAVE_REMOTE and
>> changing
>> the winsock library:
>>
>> diff -r -d
>> wpcapsrc_3_2_alpha1/winpcap/packetNtx/Dll/Project/GNUmakefile
>> wpcapsrc_3_2_alpha1_mingw/winpcap/packetNtx/Dll/Project/GNUmakefile
>> 5c5
>> < OPTFLAGS = -O -D_WINNT4
>> ---
>>> OPTFLAGS = -O -D_WINNT4 -DHAVE_REMOTE
>> 11c11
>> < LIBS = -lwsock32 -lversion
>> ---
>>> LIBS = -lws2_32 -lversion
>>
>>
>> Then I copied the bpf_stat structure. It originates in Packet32.h.
>> BPF_MAJOR_VERSION is defined which then prevents bpf_stat from being
>> defined.
>> It appears that this sort of behavior has been run into before since
>> bpf_insn
>> appears in two places. So I've copied bpf_stat in a similiar manner.
>> Probably
>> not a good fix, but it works.
>>
>> diff -r -d wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/pcap-bpf.h
>> wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/pcap-bpf.h
>> 673a674,683
>>> #ifdef __MINGW32__
>>> struct bpf_stat
>>> {
>>> UINT bs_recv;
>>> UINT bs_drop;
>>> UINT ps_ifdrop;
>>> UINT bs_capt;
>>> };
>>> #endif
>>>
>>
>>
>> The next diff adds some things to work around a bug in the MinW32 headers
>> regarding getnameinfo():
>>
>> diff -r -d wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/sockutils.h
>> wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/sockutils.h
>> 48a49,52
>>> /* Need windef.h for defines used in winsock2.h under MingW32 */
>>> #ifdef __MINGW32__
>>> #include <windef.h>
>>> #endif
>> 64a69,77
>>> /* MingW headers include this definition, but only for Windows XP and
>>> above.
>>> MSDN states that this function is available for most versions on
>>> Windows.
>>> */
>>> #if ((defined(__MINGW32__)) && (_WIN32_WINNT < 0x0501))
>>> int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
>>> char*,DWORD,int);
>>> #endif
>>>
>>>
>>
>>
>> Next is a change to fix a warning regarding the IN_MULTICAST define:
>>
>> diff -r -d
>> wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h
>> wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h
>> 33a34
>>> #ifndef __MINGW32__
>> 34a36
>>> #endif
>>
>>
>> The next diff is the same as the previous GNUmakefile diff with some
>> syntax
>> changes added:
>>
>> diff -r -d wpcapsrc_3_2_alpha1/winpcap/wpcap/PRJ/GNUmakefile
>> wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/PRJ/GNUmakefile
>> 17,18c17,18
>> < LEX = flex -Ppcap_
>> < YACC = bison -y -p pcap_
>> ---
>>> LFLAGS = -Ppcap_
>>> YFLAGS = -y -p pcap_
>> 30a31
>>> -DHAVE_REMOTE \
>> 33c34
>> < LIBS = -L ../../${PACKET_DIR}/DLL/Project -lPacket -lwsock32
>> ---
>>> LIBS = -L ../../${PACKET_DIR}/DLL/Project -lPacket -lws2_32
>> 55a57,60
>>> ../libpcap/pcap-new.o \
>>> ../libpcap/pcap-remote.o \
>>> ../libpcap/sockutils.o \
>>> ../libpcap/Win32/Src/gai_strerror.o \
>> 59c64
>> < ${CC} ${CFLAGS} ${LDFLAGS} -o wpcap.dll wpcap_no_extensions.def
>> ${OBJS} ${LIBS}
>> ---
>>> ${CC} ${CFLAGS} ${LDFLAGS} -o wpcap.dll wpcap.def ${OBJS} ${LIBS}
>> 65c70
>> < rm -f ${OBJS} ../libpcap/scanner.c ../libpcap/grammar.c wpcap.a
>> wpcap.dll
>> ---
>>> ${RM} ${OBJS} ../libpcap/scanner.c ../libpcap/grammar.c wpcap.a
>>> wpcap.dll
>> 71,72c76,77
>> < @rm -f ../libpcap/grammar.c ../libpcap/tokdefs.h
>> < $(YACC) -d $<
>> ---
>>> @${RM} ../libpcap/grammar.c ../libpcap/tokdefs.h
>>> ${YACC} ${YFLAGS} -d $<
>> 76,77c81,82
>> < @rm -f $@< $(LEX) -t $< >$*.c
>> ---
>>> @${RM} $@> ${LEX} ${LFLAGS} -t $< >$*.c
>>
>>
>> These seem to be all the changes necessary to get it working on my
>> computer.
>> Some further private changes not included in the above involved
>> dealing with mv
>> and cp since I use the XP CLI rather than MSYS or cygwin's shell.
>> Additionally,
>> I had to remember to set CC, RM, YACC, LEX, and BISON_SIMPLE in my
>> environment
>> variables, something that those familiar with makefiles probably
>> already know to
>> do. I got flex and bison for Windows from:
>>
>> http://www.monmouth.com/~wstreett/lex-yacc/lex-yacc.html
>>
>> I got diff for Windows from:
>>
>> http://gnuwin32.sourceforge.net/packages/diffutils.htm
>>
>> My environment variables were:
>>
>> CC=gcc
>> RM=del
>> YACC=bison
>> LEX=flex
>> BISON_SIMPLE=J:\lex-yacc\bison.simple
>>
>>
>> ----- Original Message -----
>> From: Gianluca Varenni
>> To: ouroborus at softhome.net
>> Sent: Thursday, January 05, 2006 9:02 AM
>> Subject: Re: [Winpcap-users] Various fixups
>>
>>
>> Hi.
>>
>> Sorry for the late reply...
>>
>> Do you have any update to these patches? I can probably find some time
>> in the
>> next week or so to try applying these patches to main source tree, it
>> we can
>> succeed in making it compile under Cygwin/MingW without breaking any
>> license.
>>
>> Happy new year
>> GV
>>
>> _______________________________________________
>> Winpcap-users mailing list
>> Winpcap-users at winpcap.org
>> https://www.winpcap.org/mailman/listinfo/winpcap-users
>>
>
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
-------------- next part --------------
diff -ru wpcapsrc_3_2_alpha1/winpcap/packetNtx/Dll/Project/GNUmakefile wpcapsrc_3_2_alpha1_mingw/winpcap/packetNtx/Dll/Project/GNUmakefile
--- wpcapsrc_3_2_alpha1/winpcap/packetNtx/Dll/Project/GNUmakefile 2004-01-13 01:15:24.000000000 -0800
+++ wpcapsrc_3_2_alpha1_mingw/winpcap/packetNtx/Dll/Project/GNUmakefile 2006-01-12 13:27:29.334250000 -0800
@@ -2,13 +2,13 @@
# Nate Lawson <nate at rootlabs.com>
# OPTFLAGS = -g -DDBG
-OPTFLAGS = -O -D_WINNT4
+OPTFLAGS = -O -D_WINNT4 -DHAVE_REMOTE
# I am suspicious of -O2 since it hosed wpcap.dll. To be safe, use -O only
CFLAGS = -I ../../../common -shared -mno-cygwin ${OPTFLAGS}
LDFLAGS = -Wl,--out-implib,libpacket.a
OBJS = ../Packet32.o ../AdInfo.o
-LIBS = -lwsock32 -lversion
+LIBS = -lws2_32 -lversion
Packet.dll: ${OBJS}
${CC} ${CFLAGS} ${LDFLAGS} -o Packet.dll ../Packet.def ${OBJS} ${LIBS}
@@ -17,7 +17,7 @@
${CC} ${CFLAGS} -o $*.o -c $<
clean:
- rm -f ${OBJS} libpacket.a Packet.dll
+ ${RM} ${OBJS} libpacket.a Packet.dll
install: Packet.dll
cp Packet.dll c:/winnt/system32
diff -ru wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/pcap-bpf.h wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/pcap-bpf.h
--- wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/pcap-bpf.h 2005-08-13 15:29:48.000000000 -0700
+++ wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/pcap-bpf.h 2006-01-10 14:50:30.070000000 -0800
@@ -671,6 +671,16 @@
bpf_int32 k;
};
+#ifdef __MINGW32__
+struct bpf_stat
+{
+ UINT bs_recv;
+ UINT bs_drop;
+ UINT ps_ifdrop;
+ UINT bs_capt;
+};
+#endif
+
/*
* Macros for insn array initializers.
*/
diff -ru wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/sockutils.h wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/sockutils.h
--- wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/sockutils.h 2003-12-05 00:00:16.000000000 -0800
+++ wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/sockutils.h 2006-01-10 13:20:24.982750000 -0800
@@ -46,6 +46,10 @@
#ifdef _WINSOCKAPI_
#undef _WINSOCKAPI_
#endif
+/* Need windef.h for defines used in winsock2.h under MingW32 */
+#ifdef __MINGW32__
+#include <windef.h>
+#endif
#include <winsock2.h>
#include <ws2tcpip.h>
#else
@@ -62,6 +66,15 @@
#endif
+/* MingW headers include this definition, but only for Windows XP and above.
+ MSDN states that this function is available for most versions on Windows.
+*/
+#if ((defined(__MINGW32__)) && (_WIN32_WINNT < 0x0501))
+int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
+ char*,DWORD,int);
+#endif
+
+
/*!
\defgroup SockUtils Cross-platform socket utilities (IPv4-IPv6)
*/
diff -ru wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h
--- wpcapsrc_3_2_alpha1/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h 2004-07-06 16:45:30.000000000 -0700
+++ wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/libpcap/Win32/Include/ip6_misc.h 2006-01-10 13:31:06.310875000 -0800
@@ -31,7 +31,9 @@
#include <ws2tcpip.h>
#endif /* __MINGW32__ */
+#ifndef __MINGW32__
#define IN_MULTICAST(a) IN_CLASSD(a)
+#endif
#define IN_EXPERIMENTAL(a) ((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000)
diff -ru wpcapsrc_3_2_alpha1/winpcap/wpcap/PRJ/GNUmakefile wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/PRJ/GNUmakefile
--- wpcapsrc_3_2_alpha1/winpcap/wpcap/PRJ/GNUmakefile 2005-07-12 21:38:38.000000000 -0700
+++ wpcapsrc_3_2_alpha1_mingw/winpcap/wpcap/PRJ/GNUmakefile 2006-01-10 13:32:49.467125000 -0800
@@ -14,8 +14,8 @@
# used by the generated parser. This allows programs to use lex/yacc
# and link against libpcap. If you don't have flex or bison, get them.
#
-LEX = flex -Ppcap_
-YACC = bison -y -p pcap_
+LFLAGS = -Ppcap_
+YFLAGS = -y -p pcap_
PACKET_DIR = packetNTx
INSTALL_DIR = ${SYSTEMROOT}\system32
@@ -28,9 +28,10 @@
-DSIZEOF_CHAR=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG_LONG=8 -DWPCAP -D'_U_=' \
-DHAVE_SNPRINTF -DHAVE_VSNPRINTF \
-DSIZEOF_LONG_LONG=8 \
+ -DHAVE_REMOTE \
-mno-cygwin -shared ${OPTFLAGS}
LDFLAGS = -Wl,--out-implib,../lib/libwpcap.a
-LIBS = -L ../../${PACKET_DIR}/DLL/Project -lPacket -lwsock32
+LIBS = -L ../../${PACKET_DIR}/DLL/Project -lPacket -lws2_32
OBJS = ../libpcap/bpf/net/bpf_filter.o \
../libpcap/bpf_dump.o \
../libpcap/bpf_image.o \
@@ -53,27 +54,31 @@
../libpcap/pcap.o \
../libpcap/savefile.o \
../libpcap/scanner.o \
+ ../libpcap/pcap-new.o \
+ ../libpcap/pcap-remote.o \
+ ../libpcap/sockutils.o \
+ ../libpcap/Win32/Src/gai_strerror.o \
../Win32-Extensions/Win32-Extensions.o
main: ${OBJS}
- ${CC} ${CFLAGS} ${LDFLAGS} -o wpcap.dll wpcap_no_extensions.def ${OBJS} ${LIBS}
+ ${CC} ${CFLAGS} ${LDFLAGS} -o wpcap.dll wpcap.def ${OBJS} ${LIBS}
install:
cp wpcap.dll ${INSTALL_DIR}
clean:
- rm -f ${OBJS} ../libpcap/scanner.c ../libpcap/grammar.c wpcap.a wpcap.dll
+ ${RM} ${OBJS} ../libpcap/scanner.c ../libpcap/grammar.c wpcap.a wpcap.dll
# Keeps intermediate .c files from being deleted
.SECONDARY: ../libpcap/scanner.c ../libpcap/grammar.c
.y.c:
- @rm -f ../libpcap/grammar.c ../libpcap/tokdefs.h
- $(YACC) -d $<
+ @${RM} ../libpcap/grammar.c ../libpcap/tokdefs.h
+ ${YACC} ${YFLAGS} -d $<
mv y.tab.c ../libpcap/grammar.c
mv y.tab.h ../libpcap/tokdefs.h
.l.c:
- @rm -f $@
- $(LEX) -t $< >$*.c
+ @${RM} $@
+ ${LEX} ${LFLAGS} -t $< >$*.c
.c.o:
${CC} ${CFLAGS} -o $*.o -c $<
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gai_strerror.c
Type: image/x-xbitmap
Size: 1101 bytes
Desc: not available
Url : http://www.winpcap.org/pipermail/winpcap-users/attachments/20060112/38d4a089/gai_strerror.xbm
More information about the Winpcap-users
mailing list