windows-nt/Source/XPSP1/NT/base/fs/rdr2/bowser/bowelect.h
2020-09-26 16:20:57 +08:00

100 lines
2.4 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
bowelect.h
Abstract:
This module
Author:
Larry Osterman (larryo) 6-May-1991
Revision History:
6-May-1991 larryo
Created
--*/
#ifndef _BOWELECT_
#define _BOWELECT_
//
// Timer values to respond to election requests.
//
#define MASTER_ELECTION_DELAY 100 // Master waits this long.
#define BACKUP_ELECTION_DELAY_MIN 200 // Backup waits at least this long
#define BACKUP_ELECTION_DELAY_MAX 600 // but no longer than this.
#define ELECTION_DELAY_MIN 800 // Others wait at least this long
#define ELECTION_DELAY_MAX 3000 // but no longer than this.
#define ELECTION_RESPONSE_MIN 200 // Election response delay.
#define ELECTION_RESPONSE_MAX 900 // Max electionresponse delay
#define ELECTION_RESEND_DELAY 1000 // Resend election at this interval
#define ELECTION_COUNT 4 // We must win election this many times.
#define ELECTION_MAX 30 // Don't send more than 30 election
// responses in an election
#define ELECTION_EXEMPT_TIME (ELECTION_DELAY_MAX + (ELECTION_RESEND_DELAY*ELECTION_COUNT)*2)
#define FIND_MASTER_WAIT (ELECTION_DELAY_MAX + ELECTION_RESEND_DELAY*(ELECTION_COUNT+2))
#define FIND_MASTER_DELAY 1500 // Retry find master delay.
#define FIND_MASTER_COUNT 6 // Number of times to retry FM
#define TRANSPORT_BIND_TIME 3*1000 // Number of milliseconds to bind to transport.
//
// The reasonable amount of time that it would take for an election.
//
#define ELECTION_TIME ((ELECTION_DELAY_MAX * ELECTION_COUNT) + TRANSPORT_BIND_TIME)
DATAGRAM_HANDLER(
BowserHandleElection
);
NTSTATUS
BowserSendElection(
IN PUNICODE_STRING NameToSend,
IN DGRECEIVER_NAME_TYPE NameType,
IN PTRANSPORT Transport,
IN BOOLEAN SendActualBrowserInfo
);
NTSTATUS
GetMasterName (
IN PIRP Irp,
IN BOOLEAN Wait,
IN BOOLEAN InFsd,
IN PLMDR_REQUEST_PACKET InputBuffer,
IN ULONG InputBufferLength
);
//NTSTATUS
//BowserBackupFindMaster(
// IN PTRANSPORT Transport,
// IN PREQUEST_ELECTION_1 ElectionResponse,
// IN ULONG BytesAvailable
// );
NTSTATUS
BowserFindMaster(
IN PTRANSPORT Transport
);
VOID
BowserLoseElection(
IN PTRANSPORT Transport
);
#endif // _BOWELECT_