Vadim Smirnov

Forum Replies Created

Viewing 15 posts - 811 through 825 (of 1,509 total)
  • Author
    Posts
  • in reply to: Developing a forwarding application #6892
    Vadim Smirnov
    Keymaster

      – I need to forward packets for WAN links or interfaces ; in order to do NAT I need to know what is the IP of this interface/connection. For the connection, I can use the RAS_LINKS structure. But is there another way for the interface than looking in the registry with the device ID ?

      – I also need to know the DNS server(s) from these interface/connection. For the interface I can look into the same key of the registry ; but for the connection, I don’t know how to find it (the information is also in the registry, but how can I proceed to know its ID ?)

      You can use IP helper API for these tasks, there is no way to do that with WinpkFilter driver.

      Since I know now I can use your driver and API, I’ll have to purchase it. How does it work after, I download a package containing all tools to install it or so ? I’d need to perform a silent install of the driver, is this possible ?
      Other question, are the sources of the VirtNet adapter available in this package ? It would be nice if I could rename it with the name of my company.

      Creating the silent installation for WinpkFilter driver is possible. The only important thing you have to care is obtaining code signing certificate and sign driver binaries to avoid Unknown Publisher warnings and allow WinpkFilter driver to load on Vista/7 x64 in normal mode. If you license WinpkFilter I will deliver you VirtNet source code for free.

      in reply to: Developing a forwarding application #6889
      Vadim Smirnov
      Keymaster

        If to be honest I already lost the idea of where you are in your development. Could you describe the particular problem in details?

        in reply to: Developing a forwarding application #6886
        Vadim Smirnov
        Keymaster

          Your applications tries to read packet only one time and then exits if fails to read one, while packetsniffer and passthru wait for packets to be available. This is the difference.

          in reply to: Developing a forwarding application #6884
          Vadim Smirnov
          Keymaster

            May be there are no packets to read from the adapter at the moment when you do read and ReadPacket returns FALSE.

            in reply to: VirtNet on WXP x64 #6631
            Vadim Smirnov
            Keymaster

              WINDDK7600.16385.0srcnetworkndisnetvmini is very similar

              Vadim Smirnov
              Keymaster

                Да, так и есть.

                in reply to: Developing a forwarding application #6882
                Vadim Smirnov
                Keymaster

                  There are ways. I use dumpbin tool for this
                  http://msdn.microsoft.com/en-us/library/c1h23y6c%28VS.71%29.aspx

                  Vadim Smirnov
                  Keymaster

                    Что имеется ввиду под поддержкой IPv6? NDIS IM сборка WinpkFilter драйвера позволяет фильтровать IPv6 на системах начиная с Windows XP и старше, для более ранних систем IPv6 не был реализован.

                    Если имеется ввиду поддержка IPv6 на уровне встроенных фильтров, то это несложно добавить если будет интерес со стороны пользователей.

                    in reply to: Developing a forwarding application #6880
                    Vadim Smirnov
                    Keymaster

                      I would advise you to check if ndisapi.dll built with MinGW really exports required functions. May be project needs some rework to be properly used with MinGW.

                      in reply to: high performance filtering #6911
                      Vadim Smirnov
                      Keymaster

                        Yes, filters allow you to reduce the number of packets indicated to user mode for processing thus improving overall performance.

                        Note, that only unmanaged block of memory can be passed to WinpkFilter driver. To simplify marshalling STATIC_FILTER_TABLE for C# is declared to contain fixed size array of filters (256).


                        //
                        // Static filters table to be passed to WinpkFilter driver
                        //
                        [StructLayout(LayoutKind.Sequential, Pack = 1)]
                        public struct STATIC_FILTER_TABLE
                        {
                        public uint m_TableSize; // number of STATIC_FILTER entries
                        [MarshalAs(UnmanagedType.ByValArray,SizeConst=256)] // For convinience (easier marshalling to unmanaged memory) the size of the array is fixed to 256 entries
                        public STATIC_FILTER[] m_StaticFilters; // Feel free to change this value if you need more filter entries
                        }

                        So in order to fix the marshalling error you have to change your code like this:


                        pFilters.m_TableSize = 7;

                        pFilters.m_StaticFilters = new STATIC_FILTER[256];

                        You pass 256 filters to drivers but only 7 are valid as indicated by pFilters.m_TableSize

                        in reply to: Developing a forwarding application #6878
                        Vadim Smirnov
                        Keymaster

                          Hmm, link errors look like you have different name mangling in DLL and application. Strange issue if you have rebuilt both projects with the same compiler. May be you have to do some changes to NDISAPI.DLL to build properly with MinGW. Regretfully,I have never used MinGW and I can hardly advise how to persuade it to make proper linkages.

                          You may consider using C interface instead C++ one, it won’t have problems like this.

                          in reply to: Developing a forwarding application #6876
                          Vadim Smirnov
                          Keymaster

                            3G modem won’t appear in the list as dedicated network adapter, but you will see an active WAN link under NDISWANIP network interface when connection is established.

                            in reply to: Developing a forwarding application #6874
                            Vadim Smirnov
                            Keymaster

                              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 ?

                              Try to rebuild ndisapi.dll with your compiler and then link to your application. Different C++ compilers use different name mangling for C++.

                              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 ?

                              In Windows all WAN devices are visible as NDISWANIP virtual Ethernet interface, so adding another modem does not change the list of adapters. If you establish the connection using 3G modem you will see it in the list of the active WAN links.

                              in reply to: Developing a forwarding application #6871
                              Vadim Smirnov
                              Keymaster

                                if (packet.source == x.x.x.x || packet.destination == y.y.y.y) then forward(packet, ipdest).

                                Is that possible to define this kind of rules with the WinpkFilter framework ?

                                Yes, this is possible. However you have to write the forwarding code by yourself.

                                I noticed that some virtual interfaces don’t appear in the adapters list (such as ms loopback adapters). In spite of it, could I be able to forward packets to a virtual interface ?

                                WInpkFilter NDIS IM driver binds only to ethernet and wan media (defined by FilterMediaTypse in INF files). Probably Microsoft Loopback adapter specifies his media as nolower. It is possible to change WInpkFilter INF files to bind to this type of network interfaces, although I find this unsafe (as you may bind to intarfaces you don’t need at all). The safer way is using different virtual network interface like VirtNet available on this web-site. VirtNet declares itself as ethernet interface.

                                Finally, I already have an application that should integrate this new functionnality. Is there a difference in terms of performance between kernel or user mode for this kind of application ?

                                Of course kernel mode implementation is faster. You don’t have to waste processor cycles for transition packets from user to kernel and back. However, CPU on desktop computers these days are powerful enough to smooth the difference.

                                in reply to: Silent WinPkfilter Installation #6869
                                Vadim Smirnov
                                Keymaster

                                  As far as i can see during the winpkflt installer there is some reading and writing of registry keys done. Is there any need for particular registry settings for getting the drivers working?

                                  These registry operations are done by DriverSigning utility which disables WHQL signature requirement if this is enabled. This is actual for Windows XP/2003 and allows to avoid unnecessary warnings.

                                  But installing the drivers with the snetcfg.exe does not work for me 🙁

                                  If installer does install successfully but you can’t do the same when calling snetcfg manually then may be this is about privileges your command line has? Try to start CMD as administrator.

                                Viewing 15 posts - 811 through 825 (of 1,509 total)