3.2.4.66 R_DhcpServerSetConfigV6 (Opnum 65)

The R_DhcpServerSetConfigV6 method sets the DHCPv6 server configuration data at the scope level or at the server level.

 DWORD R_DhcpServerSetConfigV6(
   [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress,
   [in, ref] LPDHCP_OPTION_SCOPE_INFO6 ScopeInfo,
   [in] DWORD FieldsToSet,
   [in, ref] LPDHCP_SERVER_CONFIG_INFO_V6 ConfigInfo
 );

ServerIpAddress: The IP address/host name of the DHCP server. This parameter is unused.

ScopeInfo: This is a pointer to a LPDHCP_OPTION_SCOPE_INFO6 (section 2.2.1.2.30) that contains the configuration information at the scope or server level.

FieldsToSet: Specifies the fields to be set (see section 2.2.1.2.62 for details of the fields).<68> Valid values are in the following table.

Value

Meaning

Set_UnicastFlag

0x00000001

Set unicast option.

Set_RapidCommitFlag

0x00000002

Set rapid commit option.

Set_PreferredLifetime

0x00000004

Set preferred lifetime value for nontemporary IPv6 address.

Set_ValidLifetime

0x00000008

Set valid lifetime value for nontemporary IPv6 address.

Set_T1

0x00000010

Set T1 time value.

Set_T2

0x00000020

Set T2 time value.

Set_PreferredLifetimeIATA

0x00000040

Set preferred lifetime value for temporary IPv6 address.

Set_ValidLifetimeIATA

0x00000080

Set valid lifetime value for temporary IPv6 address.

Set_AuditLogState

0x00000800

Set audit log state in the registry.

ConfigInfo: This is a pointer of type LPDHCP_SERVER_CONFIG_INFO_V6 (section 2.2.1.2.62) that contains values for the field specified by the FieldsToSet.

Return Values: A 32-bit unsigned integer value that indicates return status. A return value ERROR_SUCCESS (0x00000000) indicates that the operation was completed successfully, else it contains a Win32 error code, as specified in [MS-ERREF]. This error code value can correspond to a DHCP-specific failure, which takes a value between 20000 and 20099, or any generic failure.

Return value/code

Description

0x00000000

ERROR_SUCCESS

The call was successful.

0x00004E2D

ERROR_DHCP_JET_ERROR

An error occurred while accessing the DHCP server database.

The opnum field value for this method is 65.

When processing this call, the DHCP server MUST do the following:

  • Validate if this method is authorized for read/write access per section 3.5.5. If not, return the error ERROR_ACCESS_DENIED.

  • If the ScopeType field of ScopeInfo is set to DhcpScopeOptions6, search for DHCPv6Scope object in DHCPv6ScopeList corresponding to the IPv6 address specified in the SubnetScopeInfo field of ScopeInfo. If it is not found, then return ERROR_FILE_NOT_FOUND.

  • If FieldsToSet is Set_AuditLogState, then the DHCPv6ServerAuditLogState object is set with the value in fAuditLog field of ConfigInfo.

  • If FieldsToSet is Set_UnicastFlag, an option is created with ID as 0x20000 (following the same procedure as stated in – R_DhcpSetOptionValueV6 (section 3.2.4.53) – for default user and vendor class) and the value specified in the input ConfigInfo UnicastFlag. If the option is already present, the value is updated.

  • If FieldsToSet is Set_RapidCommitFlag, an option is created with ID as 0x20001 and the value specified in the input ConfigInfo RapidCommitFlag. If the option is already present, the value is updated.

  • If FieldsToSet is Set_ValidLifetime and the ValidLifetime in ConfigInfo is greater than the existing value of the preferred lifetime (existing value of option ID 0x20002) or the value specified in the ConfigInfo PreferredLifetime, create/update the option with ID 0x20003 with the value from ConfigInfo ValidLifetime. Otherwise, return ERROR_INVALID_PARAMETER.

  • If FieldsToSet is Set_PreferredLifetime and the preferred lifetime value in ConfigInfo is less than the existing value of the valid lifetime (existing value of option ID 0x20003), create/update the option with ID 0x20002 with the value from ConfigInfo PreferredLifetime, set the T1 value (value of option ID 0x20004) to 0.5 and the T2 value (value of option ID 0x20005) to 0.8 of the new preferred lifetime value. Otherwise, return ERROR_INVALID_PARAMETER.

  • If FieldsToSet is Set_T2, and the T2 time value in ConfigInfo is less than the existing preferred lifetime value (existing value of option ID 0x20002) and greater than the existing T1 value (value of option ID 0x20004), create/update the option with ID 0x20005 with the value from ConfigInfo T2. Otherwise, return ERROR_INVALID_PARAMETER.

  • If FieldsToSet is Set_T1, and the T1 time value in ConfigInfo is less than the existing T2 time value (value of option ID 0x20005), create/update the option with ID 0x20004 with the value from ConfigInfo T1. Otherwise, return ERROR_INVALID_PARAMETER.

  • If FieldsToSet is Set_ValidLifetimeIATA or Set_PreferredLifetimeIATA, the method returns ERROR_SUCCESS without any processing.

  • Return ERROR_SUCCESS.

Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying RPC protocol [MS-RPCE].