windows-nt/Source/XPSP1/NT/net/ias/providers/accounting/classattr.h
2020-09-26 16:20:57 +08:00

95 lines
2.3 KiB
C

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
//
// FILE
//
// classattr.h
//
// SYNOPSIS
//
// Declares the class IASClass.
//
// MODIFICATION HISTORY
//
// 08/06/1998 Original version.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef _CLASSATTR_H_
#define _CLASSATTR_H_
#if _MSC_VER >= 1000
#pragma once
#endif
#include <iaspolcy.h>
#include <iasutil.h>
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// IASClass
//
// DESCRIPTION
//
// Wrapper around the IAS-specific format for the RADIUS class attribute.
//
///////////////////////////////////////////////////////////////////////////////
struct IASClass
{
BYTE checksum[4];
BYTE vendorID[4];
BYTE version[2];
BYTE serverAddress[4];
BYTE lastReboot[8];
BYTE serialNumber[8];
//////////
// Miscellaneous accessors.
//////////
DWORD getChecksum() const throw ()
{ return IASExtractDWORD(checksum); }
DWORD getVendorID() const throw ()
{ return IASExtractDWORD(vendorID); }
WORD getVersion() const throw ()
{ return IASExtractWORD(version); }
DWORD getServerAddress() const throw ()
{ return IASExtractDWORD(serverAddress); }
FILETIME getLastReboot() const throw ()
{
FILETIME ft;
ft.dwHighDateTime = IASExtractDWORD(lastReboot);
ft.dwLowDateTime = IASExtractDWORD(lastReboot + 4);
return ft;
}
DWORDLONG getSerialNumber() const throw ()
{
ULARGE_INTEGER ul;
ul.HighPart = IASExtractDWORD(serialNumber);
ul.LowPart = IASExtractDWORD(serialNumber + 4);
return ul.QuadPart;
}
const BYTE* getString() const throw ()
{ return serialNumber + 8; }
// Returns TRUE if the class attribute is in Microsoft format.
BOOL isMicrosoft(DWORD actualLength) const throw ();
// Must be called before any calls to createAttribute.
static void initialize() throw ();
// Create a new class attribute. The caller is responsible for releasing
// the returned attribute. The tag is optional and may be null.
static PIASATTRIBUTE createAttribute(const IAS_OCTET_STRING* tag) throw ();
};
#endif // _CLASSATTRIB_H_