xpmgr/BuildTools/Include/pnrpdef.h

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)