279 lines
9.7 KiB
C
279 lines
9.7 KiB
C
|
//========================================================================
|
||
|
// Copyright (C) 1997 Microsoft Corporation
|
||
|
// Author: RameshV
|
||
|
// Description: This file has been generated. Pl look at the .c file
|
||
|
//========================================================================
|
||
|
|
||
|
typedef struct _M_SUBNET {
|
||
|
LPVOID ServerPtr; // Ptr to Server object
|
||
|
union {
|
||
|
struct { // for normal subnet.
|
||
|
DWORD Address;
|
||
|
DWORD Mask;
|
||
|
DWORD SuperScopeId; // unused for MCAST scopes
|
||
|
};
|
||
|
struct { // for multicast scope
|
||
|
DWORD MScopeId;
|
||
|
LPWSTR LangTag; // the language tag for multicast scope
|
||
|
BYTE TTL;
|
||
|
};
|
||
|
};
|
||
|
DWORD fSubnet; // TRUE => Subnet, FALSE => MSCOPE
|
||
|
DWORD State;
|
||
|
DWORD Policy;
|
||
|
DATE_TIME ExpiryTime; // Scope Lifetime. Currently used for MCast only.
|
||
|
M_OPTCLASS Options;
|
||
|
ARRAY Ranges;
|
||
|
ARRAY Exclusions;
|
||
|
M_RESERVATIONS Reservations;
|
||
|
ARRAY Servers; // future use, Server-Server protocol
|
||
|
LPWSTR Name;
|
||
|
LPWSTR Description;
|
||
|
} M_SUBNET, *PM_SUBNET, *LPM_SUBNET;
|
||
|
|
||
|
|
||
|
enum /* Anonymous */ {
|
||
|
AddressPolicyNone = 0,
|
||
|
AddressPolicySequential,
|
||
|
AddressPolicyRoundRobin
|
||
|
};
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetInit(
|
||
|
OUT PM_SUBNET *pSubnet,
|
||
|
IN DWORD Address,
|
||
|
IN DWORD Mask,
|
||
|
IN DWORD State,
|
||
|
IN DWORD SuperScopeId,
|
||
|
IN LPWSTR Name,
|
||
|
IN LPWSTR Description
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeInit(
|
||
|
OUT PM_SUBNET *pMScope,
|
||
|
IN DWORD MScopeId,
|
||
|
IN DWORD State,
|
||
|
IN DWORD AddressPolicy,
|
||
|
IN BYTE TTL,
|
||
|
IN LPWSTR Name,
|
||
|
IN LPWSTR Description,
|
||
|
IN LPWSTR LangTag,
|
||
|
IN DATE_TIME ExpiryTime
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD _inline
|
||
|
MemSubnetCleanup(
|
||
|
IN OUT PM_SUBNET Subnet
|
||
|
)
|
||
|
{
|
||
|
DWORD Error;
|
||
|
|
||
|
AssertRet(Subnet, ERROR_INVALID_PARAMETER);
|
||
|
Require(Subnet->Address&Subnet->Mask);
|
||
|
|
||
|
Error = MemOptClassCleanup(&Subnet->Options);
|
||
|
if( ERROR_SUCCESS != Error ) return Error;
|
||
|
|
||
|
Error = MemArrayCleanup(&Subnet->Ranges);
|
||
|
if( ERROR_SUCCESS != Error ) return Error;
|
||
|
|
||
|
Error = MemArrayCleanup(&Subnet->Exclusions);
|
||
|
if( ERROR_SUCCESS != Error ) return Error;
|
||
|
|
||
|
Error = MemArrayCleanup(&Subnet->Servers);
|
||
|
if( ERROR_SUCCESS != Error ) return Error;
|
||
|
|
||
|
Error = MemReserveCleanup(&Subnet->Reservations);
|
||
|
if( ERROR_SUCCESS != Error ) return Error;
|
||
|
|
||
|
MemFree(Subnet);
|
||
|
return ERROR_SUCCESS;
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD // SUCCESS if either of Excl or Range get filled, else FILE_NOT_FOUND
|
||
|
MemSubnetGetAddressInfo(
|
||
|
IN PM_SUBNET Subnet,
|
||
|
IN DWORD Address,
|
||
|
OUT PM_RANGE *Range, // OPTIONAL -- filled if a range could be found -- even if excluded
|
||
|
OUT PM_EXCL *Excl, // OPTIONAL -- filled if an exclusion could be found
|
||
|
OUT PM_RESERVATION *Reservation // OPTIONAL -- filled with a matching reservation, if found
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD // ERROR_SUCCESS on finding a collition, else ERROR_FILE_NOT_FOUND
|
||
|
MemSubnetFindCollision(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN DWORD Start,
|
||
|
IN DWORD End,
|
||
|
OUT PM_RANGE *Range, // OPTIONAL
|
||
|
OUT PM_EXCL *Excl // OPTIONAL
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD // ERROR_OBJECT_ALREADY_EXISTS on collision
|
||
|
MemSubnetAddRange( // check if the range is valid, and only then add it
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN DWORD Start,
|
||
|
IN DWORD End,
|
||
|
IN DWORD State,
|
||
|
IN ULONG BootpAllocated,
|
||
|
IN ULONG MaxBootpAllowed,
|
||
|
OUT PM_RANGE *OverlappingRange
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetAddRangeExpandOrContract(
|
||
|
IN PM_SUBNET Subnet,
|
||
|
IN DWORD StartAddress,
|
||
|
IN DWORD EndAddress,
|
||
|
OUT DWORD *OldStartAddress,
|
||
|
OUT DWORD *OldEndAddress
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetAddExcl(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN DWORD Start,
|
||
|
IN DWORD End,
|
||
|
OUT PM_EXCL *OverlappingExcl
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetDelRange(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN DWORD Start
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetDelExcl(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN DWORD Start
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetExtendOrContractRange(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN OUT PM_RANGE Range,
|
||
|
IN DWORD nAddresses, // how many addresses to extend by
|
||
|
IN BOOL fExtend, // is this an EXTEND? or a CONTRACT?
|
||
|
IN BOOL fEnd // is this operation to be done to END of range or START?
|
||
|
) ;
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemSubnetExtendOrContractExcl(
|
||
|
IN OUT PM_SUBNET Subnet,
|
||
|
IN OUT PM_EXCL Excl,
|
||
|
IN DWORD nAddresses, // how many addresses to extend by
|
||
|
IN BOOL fExtend, // is this an EXTEND? or a CONTRACT?
|
||
|
IN BOOL fEnd // is this operation to be done to END of range or START?
|
||
|
) ;
|
||
|
|
||
|
|
||
|
typedef M_SUBNET M_MSCOPE; // same structure for Multicast Scopes and Subnets
|
||
|
typedef PM_SUBNET PM_MSCOPE; // still, use the correct functions for MScope
|
||
|
typedef LPM_SUBNET LPM_MSCOPE;
|
||
|
|
||
|
|
||
|
DWORD _inline
|
||
|
MemMScopeCleanup(
|
||
|
IN PM_MSCOPE MScope
|
||
|
) {
|
||
|
return MemSubnetCleanup(MScope);
|
||
|
}
|
||
|
|
||
|
|
||
|
#define MemMScopeGetAddressInfo MemSubnetGetAddressInfo
|
||
|
#define MemMScopeFindCollision MemSubnetFindCollision
|
||
|
#define MemMScopeAddExcl MemSubnetAddExcl
|
||
|
#define MemMScopeDelRange MemSubnetDelRange
|
||
|
#define MemMScopeDelExcl MemSubnetDelExcl
|
||
|
#define MemMScopeExtendOrContractRange MemSubnetExtendOrContractRange
|
||
|
#define MemMScopeExtendOrContractExcl MemSubnetExtendOrContractExcl
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeGetAddressInfo(
|
||
|
IN PM_MSCOPE MScope,
|
||
|
IN DWORD MCastAddress,
|
||
|
OUT PM_RANGE *Range, // OPTIONAL -- filled if a range could be found -- even if excluded
|
||
|
OUT PM_EXCL *Excl, // OPTIONAL -- filled if an exclusion could be found
|
||
|
OUT PM_RESERVATION *Reservation // OPTIONAL -- filled with a matching reservation, if found
|
||
|
);
|
||
|
|
||
|
DWORD // ERROR_SUCCESS on finding a collition, else ERROR_FILE_NOT_FOUND
|
||
|
MemMScopeFindCollision(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN DWORD MCastStart,
|
||
|
IN DWORD MCastEnd,
|
||
|
OUT PM_RANGE *Range, // OPTIONAL
|
||
|
OUT PM_EXCL *Excl // OPTIONAL
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
DWORD _inline // ERROR_OBJECT_ALREADY_EXISTS on collision
|
||
|
MemMScopeAddRange( // check if the range is valid, and only then add it
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN DWORD MCastStart,
|
||
|
IN DWORD MCastEnd,
|
||
|
IN DWORD State,
|
||
|
OUT PM_RANGE *OverlappingRange
|
||
|
)
|
||
|
{
|
||
|
return MemSubnetAddRange(Subnet,MCastStart, MCastEnd, State, 0, 0, OverlappingRange);
|
||
|
}
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeAddExcl(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN DWORD MCastStart,
|
||
|
IN DWORD MCastEnd,
|
||
|
OUT PM_EXCL *OverlappingExcl
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeDelRange(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN DWORD MCastStart
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeDelExcl(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN DWORD MCastStart
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeExtendOrContractRange(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN OUT PM_RANGE Range,
|
||
|
IN DWORD nAddresses, // how many addresses to extend by
|
||
|
IN BOOL fExtend, // is this an EXTEND? or a CONTRACT?
|
||
|
IN BOOL fEnd // is this operation to be done to END of range or START?
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
MemMScopeExtendOrContractExcl(
|
||
|
IN OUT PM_MSCOPE Subnet,
|
||
|
IN OUT PM_EXCL Excl,
|
||
|
IN DWORD nAddresses, // how many addresses to extend by
|
||
|
IN BOOL fExtend, // is this an EXTEND? or a CONTRACT?
|
||
|
IN BOOL fEnd // is this operation to be done to END of range or START?
|
||
|
);
|
||
|
|
||
|
//========================================================================
|
||
|
// end of file
|
||
|
//========================================================================
|
||
|
|