Forum Replies Created
-
AuthorPosts
-
There are probably packets, because I can see them if I run the sample of packetsniffer… Maybe an initialization problem or something ?
Thanks for the link. I managed to compile my own program on another system, using the C interface. I can display the adapter list ; but I can’t ReadPacket(..) : it returns false.
I don’t know what I am missing :
TCP_AdapterList AdList;
INTERMEDIATE_BUFFER PacketBuffer;
ETH_REQUEST ReadRequest;
ADAPTER_MODE Mode;ZeroMemory ( &ReadRequest, sizeof(ETH_REQUEST) );
ZeroMemory ( &PacketBuffer, sizeof(INTERMEDIATE_BUFFER) );
ReadRequest.hAdapterHandle = (HANDLE)AdList.m_nAdapterHandle[IFACE];ReadRequest.EthPacket.Buffer = &PacketBuffer;
Mode.dwFlags = MSTCP_FLAG_SENT_LISTEN|MSTCP_FLAG_RECV_LISTEN;
Mode.hAdapterHandle = (HANDLE)AdList.m_nAdapterHandle[IFACE];
SetAdapterMode(hDrv,&Mode);
int count = 0;
while(ReadPacket(hDrv,&ReadRequest) && count<10)
{
cout<< PacketBuffer.m_Length<count++;
}Is there a problem of initialization, or someting like that ? This code looks like the one from the sample, but… it can’t read anything although the sample can.
Probably. How can I check this ?
It still doesn’t work… I’m just trying to build this simple program that should display “0” :
#include
#include
#include “Common.h”
#include “ndisapi.h”
#includeint main()
{
printf(“%sn”,GetDriverVersion(NULL));
return 0;
}with g++ -o test main.cc -lndisapi
I tried to link with the provided library, then mine ; and I still have a :
D:DOCUME~1EldredLOCALS~1Temp/ccE1baaa.o(.text+0x2a):main.cc: undefined reference to `GetDriverVersion@4′
I don’t understand…
OK I get it, thank you.
And I’m sorry, I edited my last post because I hadn’t see you had answered.
About the 3g modem I can’t test it now but I remember I established the connection before to test and it didn’t appear in the list… It’s a particular modem that works in VPN mode only, does that change a thing ?
About the build, I tried to build the library with my own compiler :
g++ -c *.cpp
ar -rc ndisapi.a *.o
ar s ndisapi.a
ren ndisapi.a ndisapi.libGot the following errors when trying to build my program using this library :
g++ -o ip_forward *.o -lndisapi
main.o(.text+0x9c):main.cc: undefined reference to `_imp___ZN8CNdisApiC1EPKc’
D:/Utilitaires/Programmation/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/../../..ndi
sapi.lib(ndisapi.o.b)(.text+0x3c):ndisapi.cpp: undefined reference to `_imp___ZT
V8CNdisApi’
D:/Utilitaires/Programmation/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/../../..ndi
sapi.lib(ndisapi.o.b)(.text+0x1e8):ndisapi.cpp: undefined reference to `_imp___Z
TV8CNdisApi’
D:/Utilitaires/Programmation/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/../../..ndi
sapi.lib(ndisapi.o.b)(.text+0x391):ndisapi.cpp: undefined reference to `_imp___Z
TV8CNdisApi’
D:/Utilitaires/Programmation/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/../../..ndi
sapi.lib(ndisapi.o.b)(.text+0x3f3):ndisapi.cpp: undefined reference to `_imp___Z
TV8CNdisApi’
D:/Utilitaires/Programmation/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/../../..ndi
sapi.lib(ndisapi.o.b)(.text+0x455):ndisapi.cpp: undefined reference to `_imp___Z
TV8CNdisApi’If I copy the dll file already build into the lib folder, it gives me :
main.o(.text+0x26):main.cc: undefined reference to `GetDriverVersion@4′
main.o(.text+0x9c):main.cc: undefined reference to `_imp___ZN8CNdisApiC1EPKc’
main.o(.text+0xb9):main.cc: undefined reference to `CNdisApi::~CNdisApi()’Now I try to build the dll on my own, but same errors again :
g++ -shared ndisapi.o -o ndisapi.dll
ndisapi.o(.text+0x3c):ndisapi.cpp: undefined reference to `_imp___ZTV8CNdisApi’
ndisapi.o(.text+0x1e8):ndisapi.cpp: undefined reference to `_imp___ZTV8CNdisApi’ndisapi.o(.text+0x391):ndisapi.cpp: undefined reference to `_imp___ZTV8CNdisApi’
ndisapi.o(.text+0x3f3):ndisapi.cpp: undefined reference to `_imp___ZTV8CNdisApi’
ndisapi.o(.text+0x455):ndisapi.cpp: undefined reference to `_imp___ZTV8CNdisApi’
What am I missing ?
I installed the VirtNet interface and it should be easier to do the forwarding : if I’m able to check the packets’ source and destination, I’ll “just” have to call SendPacketsToAdapter() where ETH_M_REQUEST.hAdapterHandle is set to the handle of the virtnet interface.
I’m trying to build an example in order to learn how to use the API. I want to use the C++ class to integrate it into an existing program. But I use MinGW and the build fails :
C:UsersEldredDocumentssrc_testip_forward>g++ -o ip_forward main.cc -lndisapi
C:UsersEldredAppDataLocalTemp/ccO5lqAd.o:main.cc:(.text+0x19e): undefined r
eference to `_imp___ZN8CNdisApiC1EPKc’
C:UsersEldredAppDataLocalTemp/ccO5lqAd.o:main.cc:(.text+0x1bb): undefined r
eference to `CNdisApi::~CNdisApi()’The link seems to be correct however, because if I don’t do this I have one more error. Any idea to fix this error ?
I also have another question : I ran listadapters.exe and it shew me a list of interfaces. Then, I plugged a 3G key and ran again the program : it shew me the same list as before. Is this normal ?
Thank you very much for your answer.
@SerpentFly wrote:Yes, this is possible. However you have to write the forwarding code by yourself.
Is there a documentation more detailed than the one provided with the samples ? I don’t know how to start…
-
AuthorPosts