|
|
/*
* omcscode.h * * Copyright (c) 1993 - 1995 by DataBeam Corporation, Lexington, KY * * Abstract: * This is the interface file for the CMCSCoder class. This * class is used to encode and decode MCS Protocol Data Units (PDU's) * to and from ASN.1 compliant byte streams using the ASN.1 toolkit. * * Caveats: * None. * * Author: * John B. O'Nan * */ #ifndef _CMCSCODER_
#define _CMCSCODER_
#include "pktcoder.h"
#include "mcspdu.h"
/*
* Macros */ #define PLUMB_DOMAIN_INDICATION 0x60
#define ERECT_DOMAIN_REQUEST 0x61
#define MERGE_CHANNELS_REQUEST 0x62
#define MERGE_CHANNELS_CONFIRM 0x63
#define PURGE_CHANNEL_INDICATION 0x64
#define MERGE_TOKENS_REQUEST 0x65
#define MERGE_TOKENS_CONFIRM 0x66
#define PURGE_TOKEN_INDICATION 0x67
#define DISCONNECT_PROVIDER_ULTIMATUM 0x68
#define REJECT_ULTIMATUM 0x69
#define ATTACH_USER_REQUEST 0x6a
#define ATTACH_USER_CONFIRM 0x6b
#define DETACH_USER_REQUEST 0x6c
#define DETACH_USER_INDICATION 0x6d
#define CHANNEL_JOIN_REQUEST 0x6e
#define CHANNEL_JOIN_CONFIRM 0x6f
#define CHANNEL_LEAVE_REQUEST 0x70
#define CHANNEL_CONVENE_REQUEST 0x71
#define CHANNEL_CONVENE_CONFIRM 0x72
#define CHANNEL_DISBAND_REQUEST 0x73
#define CHANNEL_DISBAND_INDICATION 0x74
#define CHANNEL_ADMIT_REQUEST 0x75
#define CHANNEL_ADMIT_INDICATION 0x76
#define CHANNEL_EXPEL_REQUEST 0x77
#define CHANNEL_EXPEL_INDICATION 0x78
#define SEND_DATA_REQUEST 0x79
#define SEND_DATA_INDICATION 0x7a
#define UNIFORM_SEND_DATA_REQUEST 0x7b
#define UNIFORM_SEND_DATA_INDICATION 0x7c
#define TOKEN_GRAB_REQUEST 0x7d
#define TOKEN_GRAB_CONFIRM 0x7e
#define MULTIPLE_OCTET_ID 0x7f
#define TOKEN_INHIBIT_REQUEST 0x1f
#define TOKEN_INHIBIT_CONFIRM 0x20
#define TOKEN_GIVE_REQUEST 0x21
#define TOKEN_GIVE_INDICATION 0x22
#define TOKEN_GIVE_RESPONSE 0x23
#define TOKEN_GIVE_CONFIRM 0x24
#define TOKEN_PLEASE_REQUEST 0x25
#define TOKEN_PLEASE_INDICATION 0x26
#define TOKEN_RELEASE_REQUEST 0x27
#define TOKEN_RELEASE_CONFIRM 0x28
#define TOKEN_TEST_REQUEST 0x29
#define TOKEN_TEST_CONFIRM 0x2a
#define CONNECT_INITIAL 0x65
#define CONNECT_RESPONSE 0x66
#define CONNECT_ADDITIONAL 0x67
#define CONNECT_RESULT 0x68
#define HIGHEST_BER_SEND_DATA_OVERHEAD 25
#define LOWEST_BER_SEND_DATA_OVERHEAD 19
#define HIGHEST_PER_SEND_DATA_OVERHEAD 9
#define LOWEST_PER_SEND_DATA_OVERHEAD 7
#define PER_SEND_DATA_REQUEST 0x64
#define PER_SEND_DATA_INDICATION 0x68
#define PER_UNIFORM_SEND_DATA_REQUEST 0x6c
#define PER_UNIFORM_SEND_DATA_INDICATION 0x70
#define INITIATOR_LOWER_BOUND 1001
/*
* This is the class definition for class CMCSCoder */ class CMCSCoder : public PacketCoder { public: CMCSCoder (); BOOL Init ( void ); virtual ~CMCSCoder (); virtual BOOL Encode (LPVOID pdu_structure, int pdu_type, UINT rules_type, LPBYTE *encoding_buffer, UINT *encoding_buffer_length);
virtual BOOL Decode (LPBYTE encoded_buffer, UINT encoded_buffer_length, int pdu_type, UINT rules_type, LPVOID *pdecoding_buffer, UINT *pdecoding_buffer_length);
Void ReverseDirection (LPBYTE encoded_buffer); virtual DBBoolean IsMCSDataPacket ( LPBYTE encoded_buffer, UINT rules_type); virtual void FreeEncoded (LPBYTE encoded_buffer);
virtual void FreeDecoded (int pdu_type, LPVOID decoded_buffer);
private: void SetEncodingRules (UINT rules_type); UINT Encoding_Rules_Type; ASN1encoding_t m_pEncInfo; // ptr to encoder info
ASN1decoding_t m_pDecInfo; // ptr to decoder info
}; typedef CMCSCoder * PCMCSCoder;
/*
* CMCSCoder () * * Functional Description: * This is the constructor for the CMCSCoder class. It initializes the * ASN.1 toolkit and sets the type of encoding rules to Basic Encoding * Rules (BER). It also initializes some private instance variables. * * Formal Parameters: * None. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* ~CMCSCoder () * * Functional Description: * This is a virtual destructor. It cleans up after the ASN.1 toolkit. * * Formal Parameters: * None. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* void Encode ( LPVOID pdu_structure, * int pdu_type, * UINT rules_type, * LPBYTE *encoding_buffer, * UINT *encoding_buffer_length) * * Functional Description: * This function encodes Protocol data units (PDU's) into ASN.1 compliant * byte streams. * The coder allocates the buffer space for the encoded data. * * Formal Parameters: * pdu_structure (i) Pointer to structure holding PDU data. * pdu_type (i) Define indicating Connect or Domain MCS PDU. * rules_type (i) Type of encoding rules (BER or PER). * encoding_buffer (o) Pointer to buffer to hold encoded data. * encoding_buffer_length (o) Length of encoded data. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* void Decode ( LPBYTE encoded_buffer, * UINT encoded_buffer_length, * int pdu_type, * UINT rules_type, * LPVOID decoding_buffer, * UINT decoding_buffer_length, * UINT *pulDataOffset) * * Functional Description: * This function decodes ASN.1 compliant byte streams into the * appropriate MCS PDU structures. * * Formal Parameters: * encoded_buffer (i) Pointer to buffer holding data to decode. * encoded_buffer_length(i) Length of buffer holding encoded data. * pdu_type (i) Type (Domain or Connect) of MCS PDU. * rules_type (i) Type of encoding rules (BER or PER). * decoding_buffer (o) Pointer to buffer to hold the decoded data. * decoding_buffer_length (i) Length of buffer to hold decoded data. * pulDataOffset (o) Pointer to a value that stores the offset of the data in an encoded MCS data packet. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* void CopyDecodedData ( LPVOID pdu_source_structure, * LPVOID pdu_destination_structure, * UINT pdu_type) * * Functional Description: * This function makes a complete copy of a decoded PDU structure. * * Formal Parameters: * pdu_source_structure (i) Pointer to buffer holding decoded structure. * pdu_destination_structure (i) Pointer to copy buffer. * pdu_type (i) Type (Domain or Connect) of PDU. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* Void ReverseDirection (LPBYTE encoded_buffer) * * Functional Description: * This function alters the identifier of encoded "Send Data" PDU's in * order to change back and forth between data requests and indications. * * Formal Parameters: * encoded_buffer (i) Pointer to buffer holding encoded data. * * Return Value: * None. * * Side Effects: * None. * * Caveats: * None. */
/*
* DBBoolean IsMCSDataPacket () * * Functional Description: * This function determines whether the encoded packet is an MCS Data packet * or not. * * Formal Parameters: * encoded_buffer (i) Pointer to buffer holding the encoded PDU. * rules_type (i) The used encoding rules. * * Return value: * TRUE, if the packet is an MCS Data packet. FALSE, otherwise. * * Side Effects: * None. * * Caveats: * None. */
#endif
|