windows-nt/Source/XPSP1/NT/net/rras/ip/dvmrp/peer.h
2020-09-26 16:20:57 +08:00

55 lines
1.5 KiB
C

//-----------------------------------------------------------------------------
// PEER_ENTRY
//-----------------------------------------------------------------------------
typedef struct _PEER_ENTRY {
LIST_ENTRY Link; // link all peers for that IF
IPADDR IpAddr;
DWORD Status;
DWORD MajorVersion;
DWORD MinorVersion;
DWORD GenerationId;
PDYNAMIC_RW_LOCK DRWL; // DRWL for the peer
} _PEER_ENTRY, *PPEER_ENTRY;
//
// macros for G_PeerLists_CS lock
//
#define ACQUIRE_PEER_LISTS_LOCK(_proc) \
ENTER_CRITICAL_SECTION(&G_pIfTable->PeerLists_CS, \
"G_PeerListsCS", _proc);
#define RELEASE_PEER_LISTS_LOCK(_proc) \
LEAVE_CRITICAL_SECTION(&G_pIfTable->PeerLists_CS, \
"G_PeerListsCS", _proc);
//
// macros for PeerEntry->DRWL
//
#define ACQUIRE_PEER_LOCK_EXCLUSIVE(PeerEntry, _proc) \
ACQUIRE_DYNAMIC_WRITE_LOCK( \
&PeerEntry->DRWL, &Globals.DynamicRWLStore)
#define RELEASE_PEER_LOCK_EXCLUSIVE(PeerEntry, _proc) \
RELEASE_DYNAMIC_WRITE_LOCK( \
&PeerEntry->DRWL, &Globals.DynamicRWLStore)
#define ACQUIRE_PEER_LOCK_SHARED(PeerEntry, _proc) \
ACQUIRE_DYNAMIC_READ_LOCK( \
&PeerEntry->DRWL, &Globals.DynamicRWLStore)
#define RELEASE_PEER_LOCK_SHARED(PeerEntry, _proc) \
RELEASE_DYNAMIC_READ_LOCK( \
&PeerEntry->DRWL, &Globals.DynamicRWLStore)