235 lines
9 KiB
C
235 lines
9 KiB
C
/**********************************************************************
|
|
* File: mcslog.h
|
|
* Abstract: Function headers for protocol logging functions added
|
|
* into MCSNC.DLL to read the contents of MCS PDU contents
|
|
* sent and received from the T.123 layer.
|
|
* Created: 2/18/96, Venkatesh Gopalakrishnan
|
|
* Copyright (c) 1996 Microsoft Corpration
|
|
******************************************************************** */
|
|
|
|
/* NOTE: The contents of this file are only included IFF PDULOG is a
|
|
* defined constant. This constant will be defined in the Win32 Diagnostic
|
|
* build configuration of MCSNC.DLL
|
|
*/
|
|
|
|
#ifdef PDULOG
|
|
|
|
#ifndef _PROTLOG_H
|
|
#define _PROTLOG_H
|
|
|
|
|
|
#include <windows.h>
|
|
#include <time.h>
|
|
#include <stdio.h>
|
|
|
|
#include "mpdutype.h"
|
|
#include "mcspdu.h"
|
|
|
|
#define MAXIMUM_PRINT_LENGTH 256
|
|
#define LOG_FILE_NAME "mcslog.txt"
|
|
#define SENT 0
|
|
#define RECEIVED 1
|
|
|
|
|
|
/* Enumerated Data types and corresponding strings used in
|
|
* MCS PDUs.
|
|
*/
|
|
|
|
#define NOT_IN_USE 0
|
|
#define SELF_GRABBED 1
|
|
#define OTHER_GRABBED 2
|
|
#define SELF_INHIBITED 3
|
|
#define OTHER_INHIBITED 4
|
|
#define SELF_RECIPIENT 5
|
|
#define SELF_GIVING 6
|
|
#define OTHER_GIVING 7
|
|
|
|
#define NOT_IN_USE_STR "NOT_IN_USE"
|
|
#define SELF_GRABBED_STR "SELF_GRABBED"
|
|
#define OTHER_GRABBED_STR "OTHER_GRABBED"
|
|
#define SELF_INHIBITED_STR "SELF_INHIBITED"
|
|
#define OTHER_INHIBITED_STR "OTHER_INHIBITED"
|
|
#define SELF_RECPIENT_STR "SELF_RECIPIENT"
|
|
#define SELF_GIVING_STR "SELF_GIVING"
|
|
#define OTHER_GIVING_STR "OTHER_GIVING"
|
|
|
|
#define TOP_PRI 0
|
|
#define HIGH_PRI 1
|
|
#define MEDIUM_PRI 2
|
|
#define LOW_PRI 3
|
|
|
|
#define TOP_STR "TOP_PRIORITY\n"
|
|
#define HIGH_STR "HIGH_PRIORITY\n"
|
|
#define MEDIUM_STR "MEDIUM_PRIORITY\n"
|
|
#define LOW_STR "LOW_PRIORITY\n"
|
|
|
|
#define RT_SUCCESSFUL 0
|
|
#define RT_DOMAIN_MERGING 1
|
|
#define RT_DOMAIN_NOT_HIERARCHICAL 2
|
|
#define RT_NO_SUCH_CHANNEL 3
|
|
#define RT_NO_SUCH_DOMAIN 4
|
|
#define RT_NO_SUCH_USER 5
|
|
#define RT_NOT_ADMITTED 6
|
|
#define RT_OTHER_USER 7
|
|
#define RT_PARAMETERS_UNACCEPTABLE 8
|
|
#define RT_TOKEN_NOT_AVAILABLE 9
|
|
#define RT_TOKEN_NOT_POSESSED 10
|
|
#define RT_TOO_MANY_CHANNELS 11
|
|
#define RT_TOO_MANY_TOKENS 12
|
|
#define RT_TOO_MANY_USERS 13
|
|
#define RT_UNSPECIFIED_FAILURE 14
|
|
#define RT_USER_REJECTED 15
|
|
|
|
|
|
/***
|
|
**** The following function headers are for service functions
|
|
**** for logging the value(s) of typical data types found in
|
|
**** several MCS PDU structures.
|
|
****/
|
|
void PrintPDUResult(FILE *logfile, unsigned int result);
|
|
void PrintPDUPriority(FILE *logfile, unsigned int priority);
|
|
void PrintTokenStatus(FILE *logfile, unsigned int token_status);
|
|
void PrintPDUReason(FILE *logfile, unsigned int reason);
|
|
void PrintDiagnostic(FILE *logfile, unsigned int diagnostic);
|
|
void PrintPDUSegmentation(FILE *logfile, unsigned char segmentation);
|
|
|
|
|
|
void PrintSetOfChannelIDs(FILE *logfile, PSetOfChannelIDs channel_ids);
|
|
void PrintSetOfUserIDs(FILE *logfile, PSetOfUserIDs user_ids);
|
|
void PrintSetOfTokenIDs(FILE *logfile, PSetOfTokenIDs token_ids);
|
|
void PrintSetOfTokenAttributes(FILE *logfile,
|
|
PSetOfPDUTokenAttributes token_attribute_obj);
|
|
|
|
void PrintPDUDomainParameters(FILE *logfile, PDUDomainParameters domain_params);
|
|
void PrintT120Boolean(FILE *logfile, char * string, BOOL boolean);
|
|
void PrintCharData(FILE *logfile, unsigned char *string, unsigned int length);
|
|
|
|
void PrintChannelAttributes(FILE *logfile, PDUChannelAttributes channel_attributes);
|
|
void PrintTokenAttributes(FILE *logfile, PDUTokenAttributes token_attributes);
|
|
|
|
int InitializeMCSLog();
|
|
/* Description:
|
|
* Resets the mcs protocol log file and reads any
|
|
* ini file parameters
|
|
*/
|
|
|
|
|
|
char *pszTimeStamp();
|
|
/* Desicription:
|
|
* This function is an easy interfact to getting the time the
|
|
* PDU was encoded or decoded from MCS to T.123 or vice versa.
|
|
*/
|
|
|
|
void pduLog(FILE *file, char * format_string,...);
|
|
/* Description:
|
|
* This function is used to place PDU information in a protocol
|
|
* log file. There is currently no return value. This may change.
|
|
*/
|
|
|
|
void pduFragmentation(FILE *logfile, unsigned int i);
|
|
/* Description:
|
|
* This function logs weather or not the PDU is complete
|
|
* or fragmented.
|
|
*/
|
|
|
|
void pduRawOutput(FILE *logfile, unsigned char * data, unsigned long length);
|
|
/* Description:
|
|
* This function logs a hex dump of the raw encoded MCS PDU that
|
|
* is sent over the wire via MCS.
|
|
*/
|
|
|
|
|
|
void mcsLog(PPacket packet, PDomainMCSPDU domain_pdu, unsigned int direction);
|
|
/* Description:
|
|
* This function takes care of the log headers and footers to
|
|
* attempt at compatibility with a certain third party mcs log
|
|
* reader.
|
|
*/
|
|
void mcsConnectLog(PPacket packet, PConnectMCSPDU connect_pdu, unsigned int direction);
|
|
/* same as above, but for Connect PDUs */
|
|
|
|
void pduLogMCSDomainInfo(FILE *file, PDomainMCSPDU domain_pdu);
|
|
/* Description:
|
|
* This function takes the mcs pdu structure, and based on
|
|
* Which type of MCSPDU that it is, logs internal information
|
|
* in the PDU.
|
|
*/
|
|
void pduLogMCSConnectInfo(FILE *file, PConnectMCSPDU connect_pdu);
|
|
/* same as above but for Connect PDUs */
|
|
|
|
void pduDirection(FILE *logfile,unsigned int direction);
|
|
/* Description:
|
|
* This function logs information whether the mcs pdu was sent
|
|
* or received.
|
|
*/
|
|
|
|
|
|
|
|
/*****
|
|
***** The following headers are for functions that log the output of
|
|
***** each different type of MCS PDU. Every MCS PDU is covered here.
|
|
*****/
|
|
|
|
void pduLogConnectInitial(FILE *file, PConnectMCSPDU connect_pdu);
|
|
/* Description:
|
|
* This function takes the connect_pdu and writes the component parts
|
|
* of the mcs ConnectInitial PDU.
|
|
*/
|
|
void pduLogConnectResponse(FILE *file, PConnectMCSPDU connect_pdu);
|
|
void pduLogConnectAdditional(FILE *file, PConnectMCSPDU connect_pdu);
|
|
void pduLogConnectResult(FILE *file, PConnectMCSPDU connect_pdu);
|
|
void pduLogPlumbDomainIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogErectDomainRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogMergeChannelsRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogMergeChannelsConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogPurgeChannelIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogMergeTokensRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogMergeTokensConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogPurgeTokenIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogDisconnectProviderUltimatum(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogRejectUltimatum(FILE *logfile, PDomainMCSPDU domain_pdu);
|
|
void pduLogAttachUserRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogAttachUserConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogDetachUserRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogDetachUserIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelJoinRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelJoinConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelLeaveRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelConveneRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelConveneConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelDisbandRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelDisbandIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelAdmitRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelAdmitIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelExpelRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogChannelExpelIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogSendDataRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogSendDataIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogUniformSendDataRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogUniformSendDataIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGrabRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGrabConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenInhibitRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenInhibitConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGiveRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGiveIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGiveResponse(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenGiveConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenPleaseRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenPleaseIndication(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenReleaseRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenReleaseConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenTestRequest(FILE *file, PDomainMCSPDU domain_pdu);
|
|
void pduLogTokenTestConfirm(FILE *file, PDomainMCSPDU domain_pdu);
|
|
|
|
|
|
BOOL CopyTextToChar(char * print_string,
|
|
unsigned short *text_string_value,
|
|
unsigned int text_string_length);
|
|
|
|
|
|
|
|
|
|
#endif // <<<<<<<<<<<< _PROTLOG_H
|
|
#endif // <<<<<<<<<<<< PDULOG
|