2.2.1.2.130 PPP_PROJECTION_INFO_1

The PPP_PROJECTION_INFO_1 structure<117> contains information obtained during the PPP negotiation for the PPP-based tunnels.

 typedef struct _PPP_PROJECTION_INFO_1{
   DWORD dwIPv4NegotiationError;
   WCHAR wszAddress[16];
   WCHAR wszRemoteAddress[16];
   DWORD dwIPv4Options;
   DWORD dwIPv4RemoteOptions;
   ULONG64 IPv4SubInterfaceIndex;
   DWORD dwIPv6NegotiationError;
   UCHAR bInterfaceIdentifier[8];
   UCHAR bRemoteInterfaceIdentifier[8];
   UCHAR bPrefix[8];
   DWORD dwPrefixLength;
   ULONG64 IPv6SubInterfaceIndex;
   DWORD dwLcpError;
   DWORD dwAuthenticationProtocol;
   DWORD dwAuthenticationData;
   DWORD dwRemoteAuthenticationProtocol;
   DWORD dwRemoteAuthenticationData;
   DWORD dwLcpTerminateReason;
   DWORD dwLcpRemoteTerminateReason;
   DWORD dwLcpOptions;
   DWORD dwLcpRemoteOptions;
   DWORD dwEapTypeId;
   DWORD dwRemoteEapTypeId;
   DWORD dwCcpError;
   DWORD dwCompressionAlgorithm;
   DWORD dwCcpOptions;
   DWORD dwRemoteCompressionAlgorithm;
   DWORD dwCcpRemoteOptions;
 } PPP_PROJECTION_INFO_1,
  *PPPP_PROJECTION_INFO_1;

dwIPv4NegotiationError: Same as dwError in PPP_IPCP_INFO (section 2.2.1.2.65)

wszAddress: Same as wszAddress in PPP_IPCP_INFO.

wszRemoteAddress: Same as wszRemoteAddress in PPP_IPCP_INFO.

dwIPv4Options: Same as dwOptions in PPP_IPCP_INFO.

dwIPv4RemoteOptions: Same as dwIPv4Options.

IPv4SubInterfaceIndex: Specifies the index of the subinterface corresponding to the connection on the server.

dwIPv6NegotiationError: Specifies the result of PPP_IPv6. Network control protocol negotiation. A value of zero (0) indicates that either IPv6 was not negotiated or Ipv6 has been negotiated successfully. A nonzero value indicates failure and is the actual fatal error that occurred during the control protocol.

bInterfaceIdentifier: If dwIPv6NegotiationError is zero (0) and IPv6 was negotiated, this MUST be the 64-bit interface identifier of the IPv6 address of the server interface. If dwIPv6NegotiationError is zero, a value of zero for this indicates that IPv6 was not negotiated. It MUST be zero when dwIPv6NegotiationError is nonzero.

bRemoteInterfaceIdentifier: If dwIPv6NegotiationError is zero (0) and IPv6 was negotiated, this MUST be the 64-bit interface identifier of the IPv6 address of the client interface. If dwIPv6NegotiationError is zero, a value of zero for this indicates that IPv6 was not negotiated. It MUST be zero when dwIPv6NegotiationError is nonzero.

bPrefix: Specifies the prefix of the IPv6 address of the client interface.

dwPrefixLength: The length, in bits, of the address prefix.

IPv6SubInterfaceIndex: Specifies the index of the subInterface corresponding to the connection on the server.

dwLcpError: Specifies the error that occurred if the PPP negotiation was unsuccessful and it MUST be one of the following values.

Value

Meaning

ERROR_NO_LOCAL_ENCRYPTION

0x000002E5

The local computer does not support the required data encryption type.

ERROR_NO_REMOTE_ENCRYPTION

0x000002E6

The remote computer does not support the required data encryption type.

ERROR_CHANGING_PASSWORD

0x000002C5

There was an error changing the password on the domain. The password might have been too short or might have matched a previously used password.

ERROR_PPP_NO_PROTOCOLS_CONFIGURED

0x000002D0

The PPP controlled protocols were not configured.

ERROR_AUTHENTICATION_FAILURE

0x000002B3

The connection was denied because the username or password specified is not valid or because the selected authentication protocol is not permitted on the remote server.

ERROR_MORE_DATA

0x000000EA

More data is available.

ERROR_PROTOCOL_NOT_CONFIGURED

0x000002DC

The received control protocol of the PPP is not configured.

ERROR_AUTH_INTERNAL

0x00000285

There was an internal error while processing authentication.

ERROR_NO_DIALIN_PERMISSION

0x00000289

The user does not have permission to dial in.

ERROR_SERVER_POLICY

0x0000032C

The connection was prevented because of a policy configured on the RRAS.

ERROR_PEER_REFUSED_AUTH

0x00000397

The connection could not be established because the authentication protocol used by the RRAS to verify username and password could not be matched with the one proposed by the client.

ERROR_UNKNOWN_FRAMED_PROTOCOL

0x0000031A

The Framed Protocol RADIUS [RFC2865] attribute for this client is not PPP.

ERROR_WRONG_TUNNEL_TYPE

0x0000031B

The Tunnel Type RADIUS [RFC2865] attribute for this user is not correct.

ERROR_UNKNOWN_SERVICE_TYPE

0x0000031C

The Service Type RADIUS [RFC2865] attribute for this user is neither Framed nor callback Framed.

ERROR_RESTRICTED_LOGON_HOURS

0x00000286

The user is not permitted to log on at this time of day.

ERROR_ACCT_DISABLED

0x00000287

The account is disabled.

ERROR_PASSWD_EXPIRED

0x00000288

The password for this account has expired.

ERROR_ILL_FORMED_PASSWORD

0x0000052C

Unable to update the password. The value provided for the new password contains values that are not allowed in passwords.

dwAuthenticationProtocol: The same as dwAuthenticatedProtocol in PPP_LCP_INFO.

dwAuthenticationData: The same as dwAuthenticationData in PPP_LCP_INFO (see section 2.2.1.2.71).

dwRemoteAuthenticationProtocol: Specifies the authentication protocol used to authenticate the remote computer. This will be different from dwAuthenticationProtocol in the case of demand-dial if the authentication protocol used by the two ends are different. See the dwAuthenticationProtocol member for a list of possible values.

dwRemoteAuthenticationData: Specifies additional information about the authentication protocol specified by dwRemoteAuthenticationProtocol. This will be different from dwAuthenticationData in the case of demand-dial if the authentication protocol used by the two ends are different. See the dwAuthenticationData member for a list of possible values.

dwLcpTerminateReason: Specifies the reason the connection was terminated by the local computer. This member always has a value of zero (0).

dwLcpRemoteTerminateReason: Specifies the reason the connection was terminated by the remote computer. This member always has a value of zero (0).

dwLcpOptions: The same as dwOptions in PPP_LCP_INFO (see section 2.2.1.2.71).

dwLcpRemoteOptions: Specifies information about the LCP options in use by the remote computer. See the dwLcpOptions member for a list of possible values.

dwEapTypeId: Specifies the type identifier of the EAP used to authenticate the local computer. The value of this member is valid only if dwAuthenticationProtocol is PPP_LCP_EAP. The valid values are defined in [IANA-EAP].

dwRemoteEapTypeId: MUST be zero (0). This value has no significance.

dwCcpError: Specifies an error if the negotiation is unsuccessful.

dwCompressionAlgorithm: The same as dwCompressionAlgorithm in PPP_LCP_INFO.

dwCcpOptions: The same as dwCcpOptions in PPP_LCP_INFO.

dwRemoteCompressionAlgorithm: Specifies the compression algorithm used by the remote computer. The values are the same as those for dwCompressionAlgorithm.

dwCcpRemoteOptions: Specifies the compression options on the remote computer. The following options are supported.

Value

Meaning

PPP_CCP_COMPRESSION

0x00000001

Compression without encryption.

PPP_CCP_HISTORYLESS

0x01000000

MPPE in stateless mode. The session key is changed after every packet. This mode improves performance on high-latency networks, or networks that experience significant packet loss.

PPP_CCP_ENCRYPTION40BITOLD

0x00000010

PPE using 40-bit keys.

PPP_CCP_ENCRYPTION40BIT

0x00000020

MPPE using 40-bit keys.

PPP_CCP_ENCRYPTION56BIT

0x00000080

MPPE using 56-bit keys.

PPP_CCP_ENCRYPTION128BIT

0x00000040

MPPE using 128-bit keys.

ERROR_PPP_NOT_CONVERGING

0x000002DC

The remote computer and RRAS could not converge on address negotiation.