Changelog for vpn-client-2.1.6-beta-1


------------------------------------------------------------------------
r1356 | mgrooms | 2009-12-05 19:33:34 +0000 (Sat, 05 Dec 2009) | 1 line

Add the Visual Studio project I missed while adding test_vnet in a
previous commit.
------------------------------------------------------------------------
r1355 | mgrooms | 2009-12-05 19:32:55 +0000 (Sat, 05 Dec 2009) | 1 line

Merge the filter and virtual adapter interface library code in from
head. This provides the appropriate control interfaces for the updated
kernel drivers. Modify consumers to honor these changes.
------------------------------------------------------------------------
r1352 | mgrooms | 2009-12-05 19:21:43 +0000 (Sat, 05 Dec 2009) | 1 line

Bring in virtual network adapter changes from the private driver
development branch. The updated driver allows for functionality similar
to *nix tap devices. Also import a new vnet_test application which
creates a virtual Ethernet bridge between two systems using UDP socket
relay. This allows us to stress test the new features in a lab
environment.
------------------------------------------------------------------------
r1349 | mgrooms | 2009-11-26 21:46:20 +0000 (Thu, 26 Nov 2009) | 1 line

Update NSIS build path after local re-install.
------------------------------------------------------------------------
r1346 | mgrooms | 2009-11-19 06:28:12 +0000 (Thu, 19 Nov 2009) | 1 line

Modify our driver package build script to create checked versions of the
packages. The signed binaries will be committed to the repository for
each release.
------------------------------------------------------------------------
r1342 | mgrooms | 2009-11-18 23:36:55 +0000 (Wed, 18 Nov 2009) | 1 line

Update the driver build script and add a new script for creating driver
packages. We now build the netcfg install helper application along with
drivers using the DDK framework. Driver packages are created in the
developer studio output path. At some point we will merge these with the
main solution using DDKBUILD.
------------------------------------------------------------------------
r1340 | mgrooms | 2009-11-18 23:29:59 +0000 (Wed, 18 Nov 2009) | 1 line

Modify several definitions in various driver header files. These changes
will not modify driver behavior but help the Microsoft static code
analysis tool understand special functions. Without them, a number of
false positive are reported in the output.
------------------------------------------------------------------------
r1337 | mgrooms | 2009-11-18 23:16:43 +0000 (Wed, 18 Nov 2009) | 1 line

Remove the driver build script from the install directory. It is
obsoleted by two new scripts named build-drivers and build-packages
witch will be located in the source directory.
------------------------------------------------------------------------
r1334 | mgrooms | 2009-11-18 23:12:40 +0000 (Wed, 18 Nov 2009) | 2 lines

Remove the visual studio projects used to build the netcfg install
helper application. This never worked well and should be replaced by
projects that use DDKBUILD sometime in the future.

------------------------------------------------------------------------
r1331 | mgrooms | 2009-11-15 22:43:07 +0000 (Sun, 15 Nov 2009) | 1 line

Remove the visual studio projects used to build the NDIS5 kernel
drivers. This never worked well and should be replaced by projects that
use DDKBUILD sometime in the future.
------------------------------------------------------------------------
r1327 | mgrooms | 2009-11-15 22:16:07 +0000 (Sun, 15 Nov 2009) | 1 line

Update internal kernel driver version numbers to 2.1.
------------------------------------------------------------------------
r1325 | mgrooms | 2009-11-15 22:00:52 +0000 (Sun, 15 Nov 2009) | 53
lines

Merge in the changes from an external driver development branch. Most of
this work was completed by Thomas Divine ( PCAUSA | http://www.ndis.com
) under contract by Shrew Soft Inc. Thomas has played an instrumental
role in improving the Shrew Soft NDIS kernel drivers. We highly
recommended his services to anyone who may need help with network kernel
driver development.

The following is annotated text derived from documentation provided by
Thomas.

****************
vvnet-101809-001
****************

Crash in vvnet.sys VNETInitialize when bringing up tunnel on Windows 7
x64 Edition.

One problem was that some driver initialization was being performed
after calling NdisMRegisterMiniport. In fact, VNETInitialize can be
called before NdisMRegisterMiniport returns. Partial fix is to
initialize these variables before calling NdisMRegisterMiniport. Key
problem is that VNETInitialize and VNETHalt were marked as pagable. Just
because a NDIS callback is marked as being called as PASSIVE_LEVEL does
not mean that it can be pagable. There are other criteria that make it
difficult to determine whether a callback can be pagable. Also in
VNETInitialize UNICODE functions buffer sizes were being initialized
with the character count instead of the length in bytes of the buffer.

****************
vvnet-101809-001
****************

Crash in vvnet.sys VNETHalt when closing tunnel on Windows 7 x64
Edition.

Key problem is that VNETInitialize and VNETHalt were marked as pagable.
Just because a NDIS callback is marked as being called as PASSIVE_LEVEL
does not mean that it can be pagable. There are other criteria that make
it difficult to determine whether a callback can be pagable.

***************
vflt-101609-001
***************

Problems in NDIS query/set implementation.

The original implementation attempted to perform all work in the
MiniportQueryInformation and MiniportSetInformation handlers. This
approach waited in these routines for the NdisRequest call to complete.
The wait approach involved using NdisWaitEvent. Unfortunately the
MiniportQueryInformation and MiniportSetInformation handlers can be
called at DISPATCH_LEVEL which prohibits the use of NdisWaitEvent. The
architecture was revised to eliminate waiting in
MiniportQueryInformation and MiniportSetInformation handlers.
Modifications to query information are deferred until
ProtocolRequestComplete is called.

***************
vnet-101609-001
***************

Accessing IRP after IoCompleteRequest has been called.

In VNETDispatch access is made to an IRP that has already been
completed. The act of calling IoCompleteRequest will free or recycle the
IRP memory before returning. Accessing the IoStatus field is accessing
memory that is (or may be...) freed already. Fixed in both vnet and
vvnet.

***************
vflt-101609-002
***************

Fault in SyncRefDec.

Noticed that in FLTProcessPacket a RefCount was being incremented
without being protected by a spin lock. Syncing this is necessary. Brief
testing showed that the crash in SyncRefDec could no longer be
reproduced easily after using SyncRefInc() in FLTProcessPacket. Fixed in
both vflt and vvflt.

***************
Additional Work
***************

Correct a problem that caused vvflt driver unload to hang indefinitely.
FilterUnload was intended to call FilterDeregisterDevice after all
device handles were closed. With the NDIS5 driver, this causes all
dispatch requests to fail. The caller will close its device handle and
the driver unload proceeds. However, in NDIS6 all device handles must be
closed before FilterUnload is called. We now return an error for
dispatch requests when all miniport bindings have been removed. This
prompts callers to close device handles and NDIS to call FilterUnload.

Correct a problem in the vvflt driver pause routine. The driver would
return from a pause request when send or receive operations were still
in flight. The pause routine now waits for all outstanding send or
receive operations to complete before completing pause requests.

Update all head driver versions to 2.1.6.1.
------------------------------------------------------------------------
r1323 | mgrooms | 2009-11-15 18:24:33 +0000 (Sun, 15 Nov 2009) | 1 line

Now that we have branched for 2.1.5, update the documentation version to
2.1.6.
------------------------------------------------------------------------