diff --git a/Makefile b/Makefile index 47801a4..90c199f 100644 --- a/Makefile +++ b/Makefile @@ -36,7 +36,7 @@ VERSION := git IPXWRAPPER_DEPS := src/ipxwrapper.o src/winsock.o src/ipxwrapper_stubs.o src/log.o src/common.o \ src/interface.o src/router.o src/ipxwrapper.def src/addrcache.o src/config.o src/addr.o \ - src/addrtable.o src/firewall.o + src/addrtable.o src/firewall.o src/wpcap_stubs.o BIN_FILES := $(shell cat manifest.bin.txt) SRC_FILES := $(shell cat manifest.src.txt) @@ -98,8 +98,8 @@ ipxwrapper.dll: $(IPXWRAPPER_DEPS) echo 'const char *version_string = "$(VERSION)", *compile_time = "'`date`'";' | $(CC) -c -x c -o version.o - $(CC) $(CFLAGS) -Wl,--enable-stdcall-fixup -shared -o ipxwrapper.dll $(IPXWRAPPER_DEPS) version.o -liphlpapi -lversion -lole32 -loleaut32 -ipxconfig.exe: src/ipxconfig.cpp icons/ipxconfig.o src/addr.o src/interface.o src/common.o src/config.o - $(CXX) $(CXXFLAGS) -static-libgcc -static-libstdc++ -D_WIN32_IE=0x0400 -mwindows -o ipxconfig.exe $^ -liphlpapi -lcomctl32 -lws2_32 +ipxconfig.exe: src/ipxconfig.cpp icons/ipxconfig.o src/addr.o src/interface.o src/common.o src/config.o src/wpcap_stubs.o + $(CXX) $(CXXFLAGS) -Wl,--enable-stdcall-fixup -static-libgcc -static-libstdc++ -D_WIN32_IE=0x0400 -mwindows -o ipxconfig.exe $^ -liphlpapi -lcomctl32 -lws2_32 dpwsockx.dll: src/directplay.o src/log.o src/dpwsockx_stubs.o src/common.o src/config.o src/addr.o src/dpwsockx.def $(CC) $(CFLAGS) -Wl,--enable-stdcall-fixup -shared -o $@ $^ -lwsock32 @@ -116,6 +116,9 @@ src/mswsock_stubs.s: src/mswsock_stubs.txt src/dpwsockx_stubs.s: src/dpwsockx_stubs.txt perl mkstubs.pl src/dpwsockx_stubs.txt src/dpwsockx_stubs.s 3 +src/wpcap_stubs.s: src/wpcap_stubs.txt + perl mkstubs.pl src/wpcap_stubs.txt src/wpcap_stubs.s 5 + icons/%.o: icons/%.rc icons/%.ico windres $< -O coff -o $@ diff --git a/src/common.c b/src/common.c index f3d75d2..75823ed 100644 --- a/src/common.c +++ b/src/common.c @@ -29,10 +29,11 @@ static const char *dll_names[] = { "mswsock.dll", "dpwsockx.dll", "ws2_32.dll", + "wpcap.dll", NULL }; -static HANDLE dll_handles[] = {NULL, NULL, NULL, NULL, NULL}; +static HANDLE dll_handles[] = {NULL, NULL, NULL, NULL, NULL, NULL}; /* Convert a windows error number to an error message */ const char *w32_error(DWORD errnum) { @@ -225,8 +226,9 @@ bool reg_set_addr48(HKEY key, const char *name, addr48_t value) void load_dll(unsigned int dllnum) { char path[512]; + const char *dll; - if(dllnum) { + if(dllnum && dllnum != 5) { GetSystemDirectory(path, sizeof(path)); if(strlen(path) + strlen(dll_names[dllnum]) + 2 > sizeof(path)) { @@ -236,9 +238,12 @@ void load_dll(unsigned int dllnum) { strcat(path, "\\"); strcat(path, dll_names[dllnum]); + + dll = path; + } + else{ + dll = dll_names[dllnum]; } - - const char *dll = dllnum ? path : dll_names[dllnum]; dll_handles[dllnum] = LoadLibrary(dll); if(!dll_handles[dllnum]) { diff --git a/src/wpcap_stubs.txt b/src/wpcap_stubs.txt new file mode 100644 index 0000000..68fdf0e --- /dev/null +++ b/src/wpcap_stubs.txt @@ -0,0 +1,8 @@ +pcap_open +pcap_close +pcap_findalldevs_ex +pcap_freealldevs +pcap_getevent +pcap_dispatch +pcap_geterr +pcap_sendpacket