mirror of https://github.com/UMSKT/xpmgr.git
156 lines
4.0 KiB
C
156 lines
4.0 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
pnrpdef.h
|
|
|
|
Abstract:
|
|
|
|
Common PNRP related types
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
//
|
|
// Versioning macros
|
|
//
|
|
|
|
#if defined(PNRP_USE_V1_API) && defined(PNRP_USE_V2_API)
|
|
#error Conflicting versioning macros are defined
|
|
#endif
|
|
|
|
#if(_WIN32_WINNT >= 0x0600)
|
|
|
|
#if !defined(PNRP_USE_V1_API)
|
|
#if !defined(PNRP_USE_V2_API)
|
|
#define PNRP_USE_V2_API
|
|
#endif
|
|
#endif
|
|
|
|
#else
|
|
|
|
#if !defined(PNRP_USE_V2_API)
|
|
#if !defined(PNRP_USE_V1_API)
|
|
#define PNRP_USE_V1_API
|
|
#endif
|
|
#endif
|
|
|
|
#endif /* _WIN32_WINNT >= 0x0600 */
|
|
|
|
|
|
#define PNRP_MAX_ENDPOINT_ADDRESSES (10)
|
|
|
|
//
|
|
// Scope
|
|
//
|
|
#define WSZ_SCOPE_GLOBAL L"GLOBAL"
|
|
#define WSZ_SCOPE_SITELOCAL L"SITELOCAL"
|
|
#define WSZ_SCOPE_LINKLOCAL L"LINKLOCAL"
|
|
|
|
typedef enum _PNRP_SCOPE
|
|
{
|
|
PNRP_SCOPE_ANY = 0, // Any
|
|
PNRP_GLOBAL_SCOPE = 1, // global
|
|
PNRP_SITE_LOCAL_SCOPE = 2, // site local
|
|
PNRP_LINK_LOCAL_SCOPE = 3 // link local
|
|
} PNRP_SCOPE, *PPNRP_SCOPE;
|
|
|
|
|
|
//
|
|
// Cloud state
|
|
//
|
|
|
|
typedef enum _PNRP_CLOUD_STATE
|
|
{
|
|
PNRP_CLOUD_STATE_VIRTUAL = 0, // Not initialized
|
|
PNRP_CLOUD_STATE_SYNCHRONISING = 1, // The cache is initializing
|
|
PNRP_CLOUD_STATE_ACTIVE = 2, // Cloud is active
|
|
PNRP_CLOUD_STATE_DEAD = 3, // Initialized but has had a problem
|
|
PNRP_CLOUD_STATE_DISABLED = 4, // Cloud is not disbaled in registery
|
|
PNRP_CLOUD_STATE_NO_NET = 5, // Was active, but now has lost access to net
|
|
PNRP_CLOUD_STATE_ALONE = 6 // Cloud is in standalone mode
|
|
} PNRP_CLOUD_STATE;
|
|
|
|
//
|
|
// Cloud Flags values
|
|
// These should be powers of 2 so they can be ORed together
|
|
//
|
|
|
|
typedef enum _PNRP_CLOUD_FLAGS
|
|
{
|
|
PNRP_CLOUD_NO_FLAGS = 0, //
|
|
PNRP_CLOUD_NAME_LOCAL = 1, // Name not valid on other computers
|
|
PNRP_CLOUD_RESOLVE_ONLY = 2,
|
|
PNRP_CLOUD_FULL_PARTICIPANT = 4
|
|
|
|
} PNRP_CLOUD_FLAGS;
|
|
|
|
//
|
|
// Registered name state
|
|
//
|
|
|
|
typedef enum _PNRP_REGISTERED_ID_STATE
|
|
{
|
|
PNRP_REGISTERED_ID_STATE_OK = 1, // Id is active in cloud
|
|
PNRP_REGISTERED_ID_STATE_PROBLEM = 2 // Id is no longer registered in cloud
|
|
|
|
} PNRP_REGISTERED_ID_STATE;
|
|
|
|
//
|
|
// Resolve criteria
|
|
//
|
|
|
|
typedef enum _PNRP_RESOLVE_CRITERIA
|
|
{
|
|
PNRP_RESOLVE_CRITERIA_DEFAULT = 0, // Default = PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME
|
|
|
|
PNRP_RESOLVE_CRITERIA_REMOTE_PEER_NAME = 1, // match first 128 bits (remote node)
|
|
|
|
PNRP_RESOLVE_CRITERIA_NEAREST_REMOTE_PEER_NAME = 2, // match first 128 bits, and close to top 64 bits
|
|
// of the second 128 bits (remote node)
|
|
|
|
PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME = 3,// match first 128 bits (not in the current process)
|
|
|
|
PNRP_RESOLVE_CRITERIA_NEAREST_NON_CURRENT_PROCESS_PEER_NAME = 4, // match first 128 bits, and close to top 64 bits
|
|
// of the second 128 bits (not in the current process)
|
|
|
|
PNRP_RESOLVE_CRITERIA_ANY_PEER_NAME = 5, // match first 128 bits (any node)
|
|
|
|
PNRP_RESOLVE_CRITERIA_NEAREST_PEER_NAME = 6 // match first 128 bits, and close to top 64 bits
|
|
// of the second 128 bits (any node)
|
|
|
|
|
|
} PNRP_RESOLVE_CRITERIA;
|
|
|
|
//
|
|
// PNRP Cloud identification
|
|
//
|
|
|
|
typedef struct _PNRP_CLOUD_ID
|
|
{
|
|
INT AddressFamily; // should be AF_INET6
|
|
PNRP_SCOPE Scope; // Global, site, or link
|
|
ULONG ScopeId; // specifies interface
|
|
} PNRP_CLOUD_ID, *PPNRP_CLOUD_ID;
|
|
|
|
|
|
|
|
|
|
//
|
|
// Extended payload type
|
|
//
|
|
|
|
typedef enum _PNRP_EXTENDED_PAYLOAD_TYPE
|
|
{
|
|
PNRP_EXTENDED_PAYLOAD_TYPE_NONE = 0,
|
|
PNRP_EXTENDED_PAYLOAD_TYPE_BINARY,
|
|
PNRP_EXTENDED_PAYLOAD_TYPE_STRING,
|
|
|
|
} PNRP_EXTENDED_PAYLOAD_TYPE, *PPNRP_EXTENDED_PAYLOAD_TYPE;
|
|
|
|
#define PNRP_MAX_EXTENDED_PAYLOAD_BYTES (0x1000)
|
|
|