Microsoft KB Archive/928906
Article ID: 928906
Article Last Modified on 3/15/2007
- Windows Vista Enterprise 64-bit edition
- Windows Vista Home Basic 64-bit edition
- Windows Vista Home Premium 64-bit edition
- Windows Vista Ultimate 64-bit edition
- Windows Vista Business
- Windows Vista Business 64-bit edition
- Windows Vista Enterprise
- Windows Vista Home Basic
- Windows Vista Home Premium
- Windows Vista Starter
- Windows Vista Ultimate
When you create an application to establish a virtual private network (VPN) tunnel in Windows Vista, the value that is returned by an API function is not what you expect. The remote access service incorrectly registers the VPN tunnel as an "IF_TYPE_PPP" Network Driver Interface Specification (NDIS) network interface type.
This problem occurs because the remote access service incorrectly registers a Point-to-Point Protocol (PPP) network interface and a VPN tunnel interface with the value of the "IF_TYPE_PPP" Network Driver Interface Specification (NDIS) network interface type.
To differentiate between a PPP interface and a tunnel interface, use a RASENTRY data structure. To use a RASENTRY data structure to obtain the remote access interface type, follow these steps:
- Use the RasEnumConnections function to list all active remote access connections.
Note The RasEnumConnections function returns a RASCONN structure for each remote access connection. The RASCONN structure contains the szEntryName member. The value of the szEntryName member specifies the phone book entry that is used to establish the remote access connection.
- Use the RasGetEntryProperties function to retrieve the properties of the phone book entry that the szEntryName member specifies.
Note The connection properties are stored in the RASENTRY data structure.
- If the value of the szDeviceType member equals RASDT_Vpn, the remote access connection is a VPN tunnel connection. For all other values, the remote access connection is a dial-up/Point-to-Point Protocol over Ethernet (PPPoE) connection. These other values include the following:
Note The RASENTRY structure contains the szDeviceType member. The value of the szDeviceType member specifies the remote access device type.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
The ifType value is used to store the NDIS network interface type. Examples of network interface types include the following:
- Token Ring
- VPN tunnel mode
The ifType value is a member of the data structures of the network stack. Also, the ifType value is a member of many APIs.
The Internet Assigned Numbers Authority (IANA) has defined and standardized the values of the different NDIS network interface types. The IANA standard includes the following type definitions.
|PPP network interface||IF_TYPE_PPP (23)|
|VPN tunnel type encapsulation network interface||IF_TYPE_TUNNEL (131)|
By default, when the remote access service creates a PPP network interface or a VPN tunnel interface in Windows Vista, both interface types are registered in the network stack. This occurs by using the IF_TYPE_PPP value. Functions that use the ifType value return the same ifType value for both a PPP interface and a tunnel interface.
Examples of functions that use the ifType value include the following:
You cannot determine whether an interface is a PPP type or a tunnel type by using only the ifType value. This problem occurs whenever a remote access connection is created.
Keywords: kbbug kbndis kbnetworkconnectivity kbnetwork kbexpertiseadvanced kbtshoot KB928906