2025-11-28 00:35:46 +09:00

92 lines
3.4 KiB
C++

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved
/*
Assumptions:
1) There exists a relationship with the name "test"
*/
#include<windows.h>
#include<stdio.h>
#include<dhcpsapi.h>
// This routine frees LPDHCP_FAILOVER_RELATIONSHIP and its internal elements.
VOID FreeRelationshipMemory(LPDHCP_FAILOVER_RELATIONSHIP pFailRel)
{
if (NULL != pFailRel)
{
// Frees relationship name
if (NULL != pFailRel->RelationshipName)
DhcpRpcFreeMemory(pFailRel->RelationshipName);
// Frees shared secret
if( NULL != pFailRel->SharedSecret)
DhcpRpcFreeMemory(pFailRel->SharedSecret);
//Frees Primary server's name
if (NULL != pFailRel->PrimaryServerName)
DhcpRpcFreeMemory(pFailRel->PrimaryServerName);
// Frees Secondary server's name
if (NULL != pFailRel->SecondaryServerName)
DhcpRpcFreeMemory(pFailRel->SecondaryServerName);
//Frees pScopes
if (NULL != pFailRel->pScopes)
{
//Frees individual elements of pScopes
if(NULL != pFailRel->pScopes->Elements)
{
DhcpRpcFreeMemory(pFailRel->pScopes->Elements);
}
DhcpRpcFreeMemory(pFailRel->pScopes);
}
//Frees the relationship
DhcpRpcFreeMemory(pFailRel);
pFailRel=NULL;
}
}
int __cdecl main(void)
{
LPWSTR pwszServer = NULL; // Server IP Address, a value of NULL signifies the current server (where program is executed)
LPWSTR pwszRelationshipName = L"test"; // Relationship name
LPDHCP_FAILOVER_RELATIONSHIP pRelationship = NULL; // Relationship structure
DWORD dwError = ERROR_SUCCESS;// Variable to hold error code
DWORD dwFlags = 0; // Flags to reflect which all fields are getting modified
dwError = DhcpV4FailoverGetRelationship(
pwszServer, // Server IP Address
pwszRelationshipName, // Relationship name
&pRelationship // Relationship structure (LPDHCP_FAILOVER_RELATIONSHIP)
);
if( ERROR_SUCCESS != dwError)
{
wprintf(L"DhcpV4FailoverGetRelationship failed with Error = %d\n",dwError);
goto cleanup;
}
pRelationship->Mode=HotStandby; // Failover mode
pRelationship->Mclt=0xe20; // 3616 seconds
pRelationship->SafePeriod=0x300; // 768 seconds
pRelationship->Percentage=0x46; //70 %
dwFlags |= MODE | SAFEPERIOD | MCLT | PERCENTAGE; // mode, safeperiod, mclt and percentage field needs to be modified
dwError = DhcpV4FailoverSetRelationship(
pwszServer, // Server IP Address
dwFlags, // Flags to reflect which all fields are getting modified
pRelationship // Relationship structure from which values to be modified will be picked
);
if( ERROR_SUCCESS != dwError)
{
wprintf(L"DhcpV4FailoverSetRelationship failed with Error = %d\n",dwError);
}
FreeRelationshipMemory(pRelationship);
cleanup:
return 0;
}