Microsoft KB Archive/928906

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 17:34, 18 July 2020 by 3155ffGd (talk | contribs) (importing KB archive)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Base


The "IF_TYPE_PPP" interface type is incorrectly returned by the remote access service when the remote access service establishes a VPN tunnel interface in Windows Vista

Article ID: 928906

Article Last Modified on 3/15/2007



APPLIES TO

  • 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



SYMPTOMS

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.

CAUSE

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.

WORKAROUND

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:

  1. 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.
  2. 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.
  3. 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:
    • RASDT_Modem
    • RASDT_Direct



    Note The RASENTRY structure contains the szDeviceType member. The value of the szDeviceType member specifies the remote access device type.


STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

The ifType value is used to store the NDIS network interface type. Examples of network interface types include the following:

  • Ethernet
  • Token Ring
  • PPP
  • 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.

Type Value
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:

  • GetAdaptersAddresses
  • GetAdaptersInfo

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