OpenSS7
SS7 for the
Common Man

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified:

Home Overview Status News Documentation Resources About
   
 Overview
 Status
 News
 Documentation
 Resources
 About

   
Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/daemons/isupmon/isupmon.hh


File /code/strss7/daemons/isupmon/isupmon.hh


#ifndef __ISUPMON_HH__
#define __ISUPMON_HH__

#ident "@(#) $Id: isupmon.hh,v 0.8 2003/07/24 20:38:38 brian Exp $"

#pragma interface

class UnixError;
class Pollable;
class STreamBuffer;
class SignallingTerminal;
class Message;
class Collector;
class Circuit;
class Call;

class UnixError {
      public:
	UnixError(const char *function, const char *filename, const int lineno, int error);
};

class Pollable {
      private:
	static Pollable *list;			// master list
	Pollable *next;				// next pointer
	Pollable **prev;			// previous next pointer
	static struct pollfd pfd[MAXPOLL];
	static int npfd;
	static void poll_recalc(void);
      protected:
	struct pollfd *pfdp;
	virtual int poll_open(void) = 0;	// pure virtual
	virtual void poll_event(void) = 0;	// pure virtual
	virtual void poll_close(int) = 0;	// pure virtual
      public:
	 virtual void ~Pollable(const char *fname);
	 Pollable(void);
	void poll_loop(int wait);
};

#define BUFSIZE 384

class StreamBuffer {
      protected:
	SignallingTerminal & sigTerm;		// signalling terminal
	struct strbuf ctrl;			// ctrl part for getmsg and putmsg
	struct strbuf data;			// data part for getmsg and putmsg
	char cbuf[BUFSIZE];			// ctrl buffer
	char dbuf[BUFSIZE];			// data buffer
      public:
	 virtual void ~StreamBuffer(void);
	 StreamBuffer(SignallingTerminal & st);
};

class RxStreamBuffer:public StreamBuffer {
      public:
	RxStreamBuffer(SignallingTerminal & st);
	virtual void ~RxStreamBuffer(void);
};

class TxStreamBuffer:public StreamBuffer {
      public:
	TxStreamBuffer(SignallingTerminal & st);
	virtual void ~TxStreamBuffer(void);
};

class SignallingTerminal:public Pollable {
      private:
	static SignallingTerminal *list;	// master list
	SignallingTerminal *next;		// next signalling terminal
	SignallingTerminal **prev;		// prev signalling terminal
	ulong state;				// signalling terminal state
	ulong style;				// ppa style
	ulong max_sdu;				// max SDU size
	ulong min_sdu;				// min SDU size
	ulong hdr_len;				// header length
	struct strbuf ctrl;			// ctrl part for getmsg and putmsg
	struct strbuf data;			// data part for getmsg and putmsg
	char cbuf[BUFSIZE];			// ctrl buffer
	char dbuf[BUFSIZE];			// data buffer
	virtual int poll_open(void);		// overloaded open function
	virtual void poll_event(void);		// overloaded event handler
	virtual void poll_close(void);		// overloaded close function
	Collector *collector;			// collector for this terminal
	inline void sdt_data(void);		// process data
      public:
	 virtual void ~SignallingTerminal(void);
	 SignallingTerminal(const char *devname, ulong address, Collector * c);
};

typedef struct isup_var {
	uchar *ptr;				// pointer to parameter contents
	size_t len;				// lengtho of parameter contents
	uint32_t val;				// up to first 4 bytes of parameter contents
} isup_var_t;

typedef struct {
	ParameterEOP eop;			// 0x00 - 0b00000000 - End of optional parameters
	ParameterCLRF clrf;			// 0x01 - 0b00000001 - Call reference @
	ParameterTMR tmr;			// 0x02 - 0b00000010 - Transmission medium requirement
	ParameterATP atp;			// 0x03 - 0b00000011 - Access transport
	ParameterCDPN cdpn;			// 0x04 - 0b00000100 - Called party number
	ParameterSUBN subn;			// 0x05 - 0b00000101 - Subsequent number
	ParameterNCI nci;			// 0x06 - 0b00000110 - Nature of connection indicators
	ParameterFCI fci;			// 0x07 - 0b00000111 - Forward call indicators
	ParameterOFCI ofci;			// 0x08 - 0b00001000 - Optional forward call indicators
	ParameterCPC cpc;			// 0x09 - 0b00001001 - Calling party's category
	ParameterCGPN cgpn;			// 0x0a - 0b00001010 - Calling party number
	ParameterRDGN rdgn;			// 0x0b - 0b00001011 - Redirecting number
	ParameterRDNN rdnn;			// 0x0c - 0b00001100 - Redirection number
	ParameterCONR conr;			// 0x0d - 0b00001101 - Connection request
	ParameterINRI inri;			// 0x0e - 0b00001110 - Information request indicators
	ParameterINFI infi;			// 0x0f - 0b00001111 - Information indicators @
	ParameterCOTI coti;			// 0x10 - 0b00010000 - Continuity indicators
	ParameterBCI bci;			// 0x11 - 0b00010001 - Backward call indicators
	ParameterCAUS caus;			// 0x12 - 0b00010010 - Cause indicators
	ParameterRDI rdi;			// 0x13 - 0b00010011 - Redirection information
	ParameterCGI cgi;			// 0x15 - 0b00010101 - Circuit group supervision msg type ind
	ParameterRS rs;				// 0x16 - 0b00010110 - Range and status
	ParameterCMI cmi;			// 0x17 - 0b00010111 - Call modification indicators (Blue Book)
	ParameterFACI faci;			// 0x18 - 0b00011000 - Facility indicator
	ParameterFAII faii;			// 0x19 - 0b00011001 - Facility information indicators (Bcore)
	ParameterCUGI cugi;			// 0x1a - 0b00011010 - Closed user group interlock code
	ParameterINDEX index;			// 0x1b - 0b00011011 - Index (Bellcore)
	ParameterUSI usi;			// 0x1d - 0b00011101 - User service information
	ParameterSPC spc;			// 0x1e - 0b00011110 - Signalling point code @ (Bellcore)
	ParameterUUI uui;			// 0x20 - 0b00100000 - User to user information
	ParameterCONN conn;			// 0x21 - 0b00100001 - Connected number
	ParameterSRIS sris;			// 0x22 - 0b00100010 - Suspend/resume indicators
	ParameterTNS ins;			// 0x23 - 0b00100011 - Transit network selection @
	ParameterEVNT evnt;			// 0x24 - 0b00100100 - Event information
	ParameterCSI csi;			// 0x26 - 0b00100110 - Circuit state indicator @
	ParameterACL acl;			// 0x27 - 0b00100111 - Automatic congestion level
	ParameterOCDN ocdn;			// 0x28 - 0b00101000 - Original called number
	ParameterOBCI ocbi;			// 0x29 - 0b00101001 - Optional backward call indicators
	ParameterUUIND uuind;			// 0x2a - 0b00101010 - User to user indicators
	ParameterISPC ispc;			// 0x2b - 0b00101011 - Origination ISC point code
	ParameterGNOT gnot;			// 0x2c - 0b00101100 - Generic notification
	ParameterCHI cmi;			// 0x2d - 0b00101101 - Call history information
	ParameterADI adi;			// 0x2e - 0b00101110 - Access delivery information
	ParameterNSF nsf;			// 0x2f - 0b00101111 - Network specific facilities @
	ParameterUSIP usip;			// 0x30 - 0b00110000 - User service information prime
	ParameterPROP prop;			// 0x31 - 0b00110001 - Propagation delay counter
	ParameterROPS rops;			// 0x32 - 0b00110010 - Remote operations @
	ParameterSA sa;				// 0x33 - 0b00110011 - Service activation @
	ParameterUTI uti;			// 0x34 - 0b00110100 - User teleservice information
	ParameterTMU tmu;			// 0x35 - 0b00110101 - Transmission medium used
	ParameterCDI cdi;			// 0x36 - 0b00110110 - Call diversion information
	ParameterECI eci;			// 0x37 - 0b00110111 - Echo control information
	ParameterMCI mci;			// 0x38 - 0b00111000 - Message compatibility information
	ParameterPCI pci;			// 0x39 - 0b00111001 - Parameter compatibility information
	ParameterMLPP mlpp;			// 0x3a - 0b00111010 - MLPP preference
	ParameterMCIQ mciq;			// 0x3b - 0b00111011 - MCID request indicator
	ParameterMCIR mcir;			// 0x3c - 0b00111100 - MCID response indicator
	ParameterHOPC hopc;			// 0x3d - 0b00111101 - Hop counter (reserved)
	ParameterTMRP tmrp;			// 0x3e - 0b00111110 - Transmission medium requirement prime
	ParameterLN ln;				// 0x3f - 0b00111111 - Location number
	ParameterRDNR rdnr;			// 0x40 - 0b01000000 - Redirection number restriction
	ParameterFREEP freep;			// 0x41 - 0b01000001 - Freephone indicators (reserved)
	ParameterGREF gref;			// 0x42 - 0b01000010 - Generic reference (reserved)
	ParameterGNUM gnum;			// 0xc0 - 0b11000000 - Generic number (address Bellcore)
	ParameterGDIG gdig;			// 0xc1 - 0b11000001 - Generic digits @
	ParameterEGRESS egress;			// 0xc3 - 0b11000011 - Egress (ANSI)
	ParameterJUR jur;			// 0xc4 - 0b11000100 - Jurisdiction (ANSI)
	ParameterCIDC cidc;			// 0xc5 - 0b11000101 - Carrier identification code (ANSI)
	ParameterBGROUP bgroup;			// 0xc6 - 0b11000110 - Business group (ANSI)
	ParameterNOTI noti;			// 0xe1 - 0b11100001 - Notification indicator (ANSI)
	ParameterSVACT svact;			// 0xe2 - 0b11100010 - Service activation (ANSI)
	ParameterTRNSRQ trnsq;			// 0xe3 - 0b11100011 - Transaction request (ANSI,Bellcore)
	ParameterSPR spr;			// 0xe4 - 0b11100100 - Special processing request (Bellcore)
	ParameterCGCI cgci;			// 0xe5 - 0b11100101 - Cc't group char ind (ANSI,Bellcore)
	ParameterCVRI cvri;			// 0xe6 - 0b11100110 - Cc't validation resp ind (ANSI,Bellcore)
	ParameterOTGN otgn;			// 0xe7 - 0b11100111 - Outgoing trunk group numb (ANSI,Bellcore)
	ParameterCIN cin;			// 0xe8 - 0b11101000 - Circuit ident name (ANSI,Bellcore)
	ParameterCLLI clli;			// 0xe9 - 0b11101001 - Common language loc id (ANSI,Bellcore)
	ParameterOLI oli;			// 0xea - 0b11101010 - Originating line info (ANSI,Bellcore)
	ParameterCHGN chgn;			// 0xeb - 0b11101011 - Charge number (ANSI,Bellcore)
	ParameterSVCD svcd;			// 0xec - 0b11101100 - Service code indicator (ANSI,Bellcore)
	ParameterCSEL csel;			// 0xee - 0b11101110 - Carrier selection info (ANSI,Bellcore)
	ParameterORI ori;			// 0xf3 - 0b11110011 - Outgoing route identification (Spain)
	ParameterIRI iri;			// 0xf4 - 0b11110100 - Incoming route identification (Spain)
	ParameterRATE rate;			// 0xf8 - 0b11111000 - Rate (Spain)
	ParameterIIC iic;			// 0xf9 - 0b11111001 - Identifier of incoming circuit (Spain)
	ParameterTOI toi;			// 0xfd - 0b11111101 - Trunk offering information (Singapore)
	ParameterTON ton;			// 0xfd - 0b11111101 - Type of notification (Spain)
	ParameterCRI cri;			// 0xfe - 0b11111110 - Charge rate information (Singapore)
	ParameterICCI icci;			// 0xff - 0b11111111 - Call charge information (Singapore)
} isup_opt_t;

class RoutingLabel {
      private:
	friend class Message;
	struct timeval timestamp;
	ulong si;				// service indicator
	ulong mp;				// message priority
	ulong ni;				// network indicator
	ulong dpc;				// destination point code
	ulong opc;				// originating point code
	ulong sls;				// signalling link selection
	ulong cic;				// circuit identification code
	ulong mt;				// message type
      public:
	 uint pvar;				// protocol variant
	uchar *p;				// buffer position
	uchar *e;				// buffer end
	 RoutingLabel(Collector & cl, StreamBuffer * buf);
	virtual void ~RoutingLabel(void);
};

class Message {
      public:
	enum MessageType {
		ISUP_MT_IAM = 1UL,		// 0x01 - 0b00000001 - Initial address
		ISUP_MT_SAM = 2UL,		// 0x02 - 0b00000010 - Subsequent address
		ISUP_MT_INR = 3UL,		// 0x03 - 0b00000011 - Information request
		ISUP_MT_INF = 4UL,		// 0x04 - 0b00000100 - Information
		ISUP_MT_COT = 5UL,		// 0x05 - 0b00000101 - Continuity
		ISUP_MT_ACM = 6UL,		// 0x06 - 0b00000110 - Address complete
		ISUP_MT_CON = 7UL,		// 0x07 - 0b00000111 - Connect (new ANSI)
		ISUP_MT_FOT = 8UL,		// 0x08 - 0b00001000 - Forward transfer
		ISUP_MT_ANM = 9UL,		// 0x09 - 0b00001001 - Answer
		ISUP_MT_REL = 12UL,		// 0x0c - 0b00001100 - Release
		ISUP_MT_SUS = 13UL,		// 0x0d - 0b00001101 - Suspend
		ISUP_MT_RES = 14UL,		// 0x0e - 0b00001110 - Resume
		ISUP_MT_RLC = 16UL,		// 0x10 - 0b00010000 - Release complete
		ISUP_MT_CCR = 17UL,		// 0x11 - 0b00010001 - Continuity check request
		ISUP_MT_RSC = 18UL,		// 0x12 - 0b00010010 - Reset circuit
		ISUP_MT_BLO = 19UL,		// 0x13 - 0b00010011 - Blocking
		ISUP_MT_UBL = 20UL,		// 0x14 - 0b00010100 - Unblcoking
		ISUP_MT_BLA = 21UL,		// 0x15 - 0b00010101 - Blocking acknowledgement
		ISUP_MT_UBA = 22UL,		// 0x16 - 0b00010110 - Unblocking acknowledgement
		ISUP_MT_GRS = 23UL,		// 0x17 - 0b00010111 - Circuit group reset
		ISUP_MT_CGB = 24UL,		// 0x18 - 0b00011000 - Circuit group blocking
		ISUP_MT_CGU = 25UL,		// 0x19 - 0b00011001 - Circuit group unblocking
		ISUP_MT_CGBA = 26UL,		// 0x1a - 0b00011010 - Circuit group blocking acknowledgement
		ISUP_MT_CGUA = 27UL,		// 0x1b - 0b00011011 - Circuit group unblocking acknowledgement
		ISUP_MT_CMR = 28UL,		// 0x1c - 0b00011100 - Call Modification Request (new ANSI)
		ISUP_MT_CMC = 29UL,		// 0x1d - 0b00011101 - Call Modification Completed (new ANSI)
		ISUP_MT_CMRJ = 30UL,		// 0x1e - 0b00011110 - Call Modification Reject (new ANSI)
		ISUP_MT_FAR = 31UL,		// 0x1f - 0b00011111 - Facility request
		ISUP_MT_FAA = 32UL,		// 0x20 - 0b00100000 - Facility accepted
		ISUP_MT_FRJ = 33UL,		// 0x21 - 0b00100001 - Facility reject
		ISUP_MT_FAD = 34UL,		// 0x22 - 0b00100010 - Facility Deactivated (old Bellcore only)
		ISUP_MT_FAI = 35UL,		// 0x23 - 0b00100011 - Facility Information (old Bellcore only)
		ISUP_MT_LPA = 36UL,		// 0x24 - 0b00100100 - Loop back acknowledgement
		ISUP_MT_DRS = 39UL,		// 0x27 - 0b00100111 - Delayed release (new ANSI)
		ISUP_MT_PAM = 40UL,		// 0x28 - 0b00101000 - Pass along
		ISUP_MT_GRA = 41UL,		// 0x29 - 0b00101001 - Circuit group reset acknowledgement
		ISUP_MT_CQM = 42UL,		// 0x2a - 0b00101010 - Circuit group query
		ISUP_MT_CQR = 43UL,		// 0x2b - 0b00101011 - Circuit group query response
		ISUP_MT_CPG = 44UL,		// 0x2c - 0b00101100 - Call progress
		ISUP_MT_USR = 45UL,		// 0x2d - 0b00101101 - User-to-user information
		ISUP_MT_UCIC = 46UL,		// 0x2e - 0b00101110 - Unequipped circuit identification code
		ISUP_MT_CFN = 47UL,		// 0x2f - 0b00101111 - Confusion
		ISUP_MT_OLM = 48UL,		// 0x30 - 0b00110000 - Overload
		ISUP_MT_CRG = 49UL,		// 0x31 - 0b00110001 - Charge information
		ISUP_MT_NRM = 50UL,		// 0x32 - 0b00110010 - Network resource management
		ISUP_MT_FAC = 51UL,		// 0x33 - 0b00110011 - Facility
		ISUP_MT_UPT = 52UL,		// 0x34 - 0b00110100 - User part test
		ISUP_MT_UPA = 53UL,		// 0x35 - 0b00110101 - User part available
		ISUP_MT_IDR = 54UL,		// 0x36 - 0b00110110 - Identification request
		ISUP_MT_IRS = 55UL,		// 0x37 - 0b00110111 - Identification response
		ISUP_MT_SGM = 56UL,		// 0x38 - 0b00111000 - Segmentation
		ISUP_MT_CRA = 233UL,		// 0xe9 - 0b11101001 - Circuit Reservation Ack (ANSI 2000)
		ISUP_MT_CRM = 234UL,		// 0xea - 0b11101010 - Circuit Reservation (ANSI 2000)
		ISUP_MT_CVR = 235UL,		// 0xeb - 0b11101011 - Circuit Validation Response (ANSI 2000)
		ISUP_MT_CVT = 236UL,		// 0xec - 0b11101100 - Circuit Validation Test (ANSI 2000)
		ISUP_MT_EXM = 237UL,		// 0xed - 0b11101101 - Exit (old Bellcore/ANSI 2000)
		ISUP_MT_NON = 248UL,		// 0xf8 - 0b11111000 - National Notification (Spain)
		ISUP_MT_LLM = 252UL,		// 0xfc - 0b11111100 - National Malicious Call (Spain)
		ISUP_MT_CAK = 253UL,		// 0xfd - 0b11111101 - Charge Acknowledgement (Singapore)
		ISUP_MT_TCM = 254UL,		// 0xfe - 0b11111110 - Tariff Charge (Singapore)
		ISUP_MT_MCP = 255UL,		// 0xff - 0b11111111 - Malicious Call Print (Singapore)
	};
	enum ParameterType {
		ISUP_PT_EOP = 0UL,		// 0x00 - 0b00000000 - End of optional parameters
		ISUP_PT_CLRF = 1UL,		// 0x01 - 0b00000001 - Call reference @
		ISUP_PT_TMR = 2UL,		// 0x02 - 0b00000010 - Transmission medium requirement
		ISUP_PT_ATP = 3UL,		// 0x03 - 0b00000011 - Access transport
		ISUP_PT_CDPN = 4UL,		// 0x04 - 0b00000100 - Called party number
		ISUP_PT_SUBN = 5UL,		// 0x05 - 0b00000101 - Subsequent number
		ISUP_PT_NCI = 6UL,		// 0x06 - 0b00000110 - Nature of connection indicators
		ISUP_PT_FCI = 7UL,		// 0x07 - 0b00000111 - Forward call indicators
		ISUP_PT_OFCI = 8UL,		// 0x08 - 0b00001000 - Optional forward call indicators
		ISUP_PT_CPC = 9UL,		// 0x09 - 0b00001001 - Calling party's category
		ISUP_PT_CGPN = 10UL,		// 0x0a - 0b00001010 - Calling party number
		ISUP_PT_RDGN = 11UL,		// 0x0b - 0b00001011 - Redirecting number
		ISUP_PT_RDNN = 12UL,		// 0x0c - 0b00001100 - Redirection number
		ISUP_PT_CONR = 13UL,		// 0x0d - 0b00001101 - Connection request
		ISUP_PT_INRI = 14UL,		// 0x0e - 0b00001110 - Information request indicators
		ISUP_PT_INFI = 15UL,		// 0x0f - 0b00001111 - Information indicators @
		ISUP_PT_COTI = 16UL,		// 0x10 - 0b00010000 - Continuity indicators
		ISUP_PT_BCI = 17UL,		// 0x11 - 0b00010001 - Backward call indicators
		ISUP_PT_CAUS = 18UL,		// 0x12 - 0b00010010 - Cause indicators
		ISUP_PT_RDI = 19UL,		// 0x13 - 0b00010011 - Redirection information
		ISUP_PT_CGI = 21UL,		// 0x15 - 0b00010101 - Circuit group supervision msg type ind
		ISUP_PT_RS = 22UL,		// 0x16 - 0b00010110 - Range and status
		ISUP_PT_CMI = 23UL,		// 0x17 - 0b00010111 - Call modification indicators (Blue Book)
		ISUP_PT_FACI = 24UL,		// 0x18 - 0b00011000 - Facility indicator
		ISUP_PT_FAII = 25UL,		// 0x19 - 0b00011001 - Facility information indicators (Bcore)
		ISUP_PT_CUGI = 26UL,		// 0x1a - 0b00011010 - Closed user group interlock code
		ISUP_PT_INDEX = 27UL,		// 0x1b - 0b00011011 - Index (Bellcore)
		ISUP_PT_USI = 29UL,		// 0x1d - 0b00011101 - User service information
		ISUP_PT_SPC = 30UL,		// 0x1e - 0b00011110 - Signalling point code @ (Bellcore)
		ISUP_PT_UUI = 32UL,		// 0x20 - 0b00100000 - User to user information
		ISUP_PT_CONN = 33UL,		// 0x21 - 0b00100001 - Connected number
		ISUP_PT_SRIS = 34UL,		// 0x22 - 0b00100010 - Suspend/resume indicators
		ISUP_PT_TNS = 35UL,		// 0x23 - 0b00100011 - Transit network selection @
		ISUP_PT_EVNT = 36UL,		// 0x24 - 0b00100100 - Event information
		ISUP_PT_CSI = 38UL,		// 0x26 - 0b00100110 - Circuit state indicator @
		ISUP_PT_ACL = 39UL,		// 0x27 - 0b00100111 - Automatic congestion level
		ISUP_PT_OCDN = 40UL,		// 0x28 - 0b00101000 - Original called number
		ISUP_PT_OBCI = 41UL,		// 0x29 - 0b00101001 - Optional backward call indicators
		ISUP_PT_UUIND = 42UL,		// 0x2a - 0b00101010 - User to user indicators
		ISUP_PT_ISPC = 43UL,		// 0x2b - 0b00101011 - Origination ISC point code
		ISUP_PT_GNOT = 44UL,		// 0x2c - 0b00101100 - Generic notification
		ISUP_PT_CHI = 45UL,		// 0x2d - 0b00101101 - Call history information
		ISUP_PT_ADI = 46UL,		// 0x2e - 0b00101110 - Access delivery information
		ISUP_PT_NSF = 47UL,		// 0x2f - 0b00101111 - Network specific facilities @
		ISUP_PT_USIP = 48UL,		// 0x30 - 0b00110000 - User service information prime
		ISUP_PT_PROP = 49UL,		// 0x31 - 0b00110001 - Propagation delay counter
		ISUP_PT_ROPS = 50UL,		// 0x32 - 0b00110010 - Remote operations @
		ISUP_PT_SA = 51UL,		// 0x33 - 0b00110011 - Service activation @
		ISUP_PT_UTI = 52UL,		// 0x34 - 0b00110100 - User teleservice information
		ISUP_PT_TMU = 53UL,		// 0x35 - 0b00110101 - Transmission medium used
		ISUP_PT_CDI = 54UL,		// 0x36 - 0b00110110 - Call diversion information
		ISUP_PT_ECI = 55UL,		// 0x37 - 0b00110111 - Echo control information
		ISUP_PT_MCI = 56UL,		// 0x38 - 0b00111000 - Message compatibility information
		ISUP_PT_PCI = 57UL,		// 0x39 - 0b00111001 - Parameter compatibility information
		ISUP_PT_MLPP = 58UL,		// 0x3a - 0b00111010 - MLPP preference (Precedence)
		ISUP_PT_MCIQ = 59UL,		// 0x3b - 0b00111011 - MCID request indicator
		ISUP_PT_MCIR = 60UL,		// 0x3c - 0b00111100 - MCID response indicator
		ISUP_PT_HOPC = 61UL,		// 0x3d - 0b00111101 - Hop counter (reserved)
		ISUP_PT_TMRP = 62UL,		// 0x3e - 0b00111110 - Transmission medium requirement prime
		ISUP_PT_LN = 63UL,		// 0x3f - 0b00111111 - Location number
		ISUP_PT_RDNR = 64UL,		// 0x40 - 0b01000000 - Redirection number restriction
		ISUP_PT_FREEP = 65UL,		// 0x41 - 0b01000001 - Freephone indicators (reserved)
		ISUP_PT_GREF = 66UL,		// 0x42 - 0b01000010 - Generic reference (reserved)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b01001110 - Redirect capability (ANSI 2000)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b01011011 - Network management controls (ANSI 2000)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b01110111 - Redirect counter (ANSI 2000)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b01111011 - Pivot capability (ANSI 2000)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b01111100 - Pivot routing indicator (ANSI 2000)
		ISUP_PT_XXX = XXUL,		// 0x?? - 0b10000001 - Pivot status (ANSI 2000)
		ISUP_PT_GNUM = 192UL,		// 0xc0 - 0b11000000 - Generic number (address Bellcore)
		ISUP_PT_GDIG = 193UL,		// 0xc1 - 0b11000001 - Generic digits @
		ISUP_PT_EGRESS = 195UL,		// 0xc3 - 0b11000011 - Egress (ANSI)
		ISUP_PT_JUR = 196UL,		// 0xc4 - 0b11000100 - Jurisdiction (ANSI)
		ISUP_PT_CIDC = 197UL,		// 0xc5 - 0b11000101 - Carrier identification code (ANSI)
		ISUP_PT_BGROUP = 198UL,		// 0xc6 - 0b11000110 - Business group (ANSI)
		ISUP_PT_NOTI = 225UL,		// 0xe1 - 0b11100001 - Notification indicator (ANSI)
		ISUP_PT_SVACT = 226UL,		// 0xe2 - 0b11100010 - Service activation (ANSI)
		ISUP_PT_TRNSRQ = 227UL,		// 0xe3 - 0b11100011 - Transaction request (ANSI,Bellcore)
		ISUP_PT_SPR = 228UL,		// 0xe4 - 0b11100100 - Special processing request (Bellcore)
		ISUP_PT_CGCI = 229UL,		// 0xe5 - 0b11100101 - Cc't group char ind (ANSI,Bellcore)
		ISUP_PT_CVRI = 230UL,		// 0xe6 - 0b11100110 - Cc't validation resp ind (ANSI,Bellcore)
		ISUP_PT_OTGN = 231UL,		// 0xe7 - 0b11100111 - Outgoing trunk group numb (ANSI,Bellcore)
		ISUP_PT_CIN = 232UL,		// 0xe8 - 0b11101000 - Circuit ident name (ANSI,Bellcore)
		ISUP_PT_CLLI = 233UL,		// 0xe9 - 0b11101001 - Common language loc id (ANSI,Bellcore)
		ISUP_PT_OLI = 234UL,		// 0xea - 0b11101010 - Originating line info (ANSI,Bellcore)
		ISUP_PT_CHGN = 235UL,		// 0xeb - 0b11101011 - Charge number (ANSI,Bellcore)
		ISUP_PT_SVCD = 236UL,		// 0xec - 0b11101100 - Service code indicator (ANSI,Bellcore)
		ISUP_PT_CSEL = 238UL,		// 0xee - 0b11101110 - Carrier selection info (ANSI,Bellcore)
		ISUP_PT_ORI = 243UL,		// 0xf3 - 0b11110011 - Outgoing route identification (Spain)
		ISUP_PT_IRI = 244UL,		// 0xf4 - 0b11110100 - Incoming route identification (Spain)
		ISUP_PT_RATE = 248UL,		// 0xf8 - 0b11111000 - Rate (Spain)
		ISUP_PT_IIC = 249UL,		// 0xf9 - 0b11111001 - Identifier of incoming circuit (Spain)
		ISUP_PT_TOI = 253UL,		// 0xfd - 0b11111101 - Trunk offering information (Singapore)
		ISUP_PT_TON = 253UL,		// 0xfd - 0b11111101 - Type of notification (Spain)
		ISUP_PT_CRI = 254UL,		// 0xfe - 0b11111110 - Charge rate information (Singapore)
		ISUP_PT_ICCI = 255UL,		// 0xff - 0b11111111 - Call charge information (Singapore)
	};
	uint pvar;				// protocol variant
	uchar *p;				// buffer position
	uchar *e;				// buffer end
	 RoutingLabel & routLabel;		// associated Routing Label
	 Message(RoutingLabel & rl);
	virtual void ~Message(void);
};

class Parameter {
      private:
	Parameter * next;			// list linkage
	Parameter **prev;			// list linkage
      protected:
	uchar *ptr;				// pointer to parameter value in memory
	uint len;				// length of parameter value in memory
	ulong val;				// unpacked value of parameter
	ulong tag;				// parameter tag
      public:
	 Message & msg;				// reference to message this parm belongs to
	 Parameter(void);
	 Parameter(Message & m);
	virtual void ~Parameter(void);
	void link(Parameter * &list);		// link parameter into a list
	void unlink(void);			// unlink parameter from list
};
class ParameterOne:public Parameter {
      public:
	ParameterOne(void);
	 ParameterOne(Message & m);
	virtual void ~ParameterOne(void);
};
class ParameterTwo:public Parameter {
      public:
	ParameterTwo(void);
	 ParameterTwo(Message & m);
	virtual void ~ParameterTwo(void);
};
class ParameterThree:public Parameter {
      public:
	ParameterThree(void);
	 ParameterThree(Message & m);
	virtual void ~ParameterThree(void);
};
class ParameterFour:public Parameter {
      public:
	ParameterFour(void);
	 ParameterFour(Message & m);
	virtual void ~ParameterFour(void);
};
class ParameterPc:public Parameter {
      public:
	ParameterPc(void);
	 ParameterPc(Message & m);
	virtual void ~ParameterPc(void);
};
class ParameterVar:public Parameter {
      public:
	ParameterVar(void);
	 ParameterVar(Message & m);
	virtual void ~ParameterVar(void);
};

class ParameterEOP:public Parameter {		// 0x00 - 0b00000000 - End of optional parameters
      public:
	ParameterEOP(Message & m);
};
class ParameterCLRF:public ParameterVar {	// 0x01 - 0b00000001 - Call reference @
      public:
	ParameterCLRF(Message & m);
};
class ParameterTMR:public ParameterOne {	// 0x02 - 0b00000010 - Transmission medium requirement
      public:
	ParameterTMR(Message & m);
};
class ParameterATP:public ParameterVar {	// 0x03 - 0b00000011 - Access transport
      public:
	ParameterATP(Message & m);
};
class ParameterCDPN:public ParameterVar {	// 0x04 - 0b00000100 - Called party number
      public:
	ParameterCDPN(Message & m);
};
class ParameterSUBN:public ParameterVar {	// 0x05 - 0b00000101 - Subsequent number
      public:
	ParameterSUBN(Message & m);
};
class ParameterNCI:public ParameterOne {	// 0x06 - 0b00000110 - Nature of connection indicators
      public:
	ParameterNCI(Message & m);
};
class ParameterFCI:public ParameterTwo {	// 0x07 - 0b00000111 - Forward call indicators
      public:
	ParameterFCI(Message & m);
};
class ParameterOFCI:public ParameterVar {	// 0x08 - 0b00001000 - Optional forward call indicators
      public:
	ParameterOFCI(Message & m);
};
class ParameterCPC:public ParameterOne {	// 0x09 - 0b00001001 - Calling party's category
      public:
	ParameterCPC(Message & m);
};
class ParameterCGPN:public ParameterVar {	// 0x0a - 0b00001010 - Calling party number
      public:
	ParameterCGPN(Message & m);
};
class ParameterRDGN:public ParameterVar {	// 0x0b - 0b00001011 - Redirecting number
      public:
	ParameterRDGN(Message & m);
};
class ParameterRDNN:public ParameterVar {	// 0x0c - 0b00001100 - Redirection number
      public:
	ParameterRDNN(Message & m);
};
class ParameterCONR:public ParameterVar {	// 0x0d - 0b00001101 - Connection request
      public:
	ParameterCONR(Message & m);
};
class ParameterINRI:public ParameterOne {	// 0x0e - 0b00001110 - Information request indicators
      public:
	ParameterINRI(Message & m);
};
class ParameterINFI:public ParameterOne {	// 0x0f - 0b00001111 - Information indicators @
      public:
	ParameterINFI(Message & m);
};
class ParameterCOTI:public ParameterTwo {	// 0x10 - 0b00010000 - Continuity indicators
      public:
	ParameterCOTI(Message & m);
};
class ParameterBCI:public ParameterTwo {	// 0x11 - 0b00010001 - Backward call indicators
      public:
	ParameterBCI(Message & m);
};
class ParameterCAUS:public ParameterVar {	// 0x12 - 0b00010010 - Cause indicators
      public:
	ParameterCAUS(Message & m);
};
class ParameterRDI:public ParameterTwo {	// 0x13 - 0b00010011 - Redirection information
      public:
	ParameterRDI(Message & m);
};
class ParameterCGI:public ParameterOne {	// 0x15 - 0b00010101 - Circuit group supervision msg type ind
      public:
	ParameterCGI(Message & m);
};
class ParameterRS:public ParameterVar {		// 0x16 - 0b00010110 - Range and status
      public:
	ParameterRS(Message & m);
};
class ParameterCMI:public ParameterOne {	// 0x17 - 0b00010111 - Call modification indicators (Blue Book)
      public:
	ParameterCMI(Message & m);
};
class ParameterFACI:public ParameterOne {	// 0x18 - 0b00011000 - Facility indicator
      public:
	ParameterFACI(Message & m);
};
class ParameterFAII:public ParameterOne {	// 0x19 - 0b00011001 - Facility information indicators (Bcore)
      public:
	ParameterFAII(Message & m);
};
class ParameterCUGI:public ParameterVar {	// 0x1a - 0b00011010 - Closed user group interlock code
      public:
	ParameterCUGI(Message & m);
};
class ParameterINDEX:public ParameterFour {	// 0x1b - 0b00011011 - Index (Bellcore)
      public:
	ParameterINDEX(Message & m);
};
class ParameterUSI:public ParameterVar {	// 0x1d - 0b00011101 - User service information
      public:
	ParameterUSI(Message & m);
};
class ParameterSPC:public ParameterPc {		// 0x1e - 0b00011110 - Signalling point code @ (Bellcore)
      public:
	ParameterSPC(Message & m);
};
class ParameterUUI:public ParameterVar {	// 0x20 - 0b00100000 - User to user information
      public:
	ParameterUUI(Message & m);
};
class ParameterCONN:public ParameterVar {	// 0x21 - 0b00100001 - Connected number
      public:
	ParameterCONN(Message & m);
};
class ParameterSRIS:public ParameterOne {	// 0x22 - 0b00100010 - Suspend/resume indicators
      public:
	ParameterSRIS(Message & m);
};
class ParameterTNS:public ParameterVar {	// 0x23 - 0b00100011 - Transit network selection @
      public:
	ParameterTNS(Message & m);
};
class ParameterEVNT:public ParameterOne {	// 0x24 - 0b00100100 - Event information
      public:
	ParameterEVNT(Message & m);
};
class ParameterCSI:public ParameterVar {	// 0x26 - 0b00100110 - Circuit state indicator @
      public:
	ParameterCSI(Message & m);
};
class ParameterACL:public ParameterOne {	// 0x27 - 0b00100111 - Automatic congestion level
      public:
	ParameterACL(Message & m);
};
class ParameterOCDN:public ParameterVar {	// 0x28 - 0b00101000 - Original called number
      public:
	ParameterOCDN(Message & m);
};
class ParameterOBCI:public ParameterVar {	// 0x29 - 0b00101001 - Optional backward call indicators
      public:
	ParameterOBCI(Message & m);
};
class ParameterUUIND:public ParameterOne {	// 0x2a - 0b00101010 - User to user indicators
      public:
	ParameterUUIND(Message & m);
};
class ParameterISPC:public ParameterPc {	// 0x2b - 0b00101011 - Origination ISC point code
      public:
	ParameterISPC(Message & m);
};
class ParameterGNOT:public ParameterOne {	// 0x2c - 0b00101100 - Generic notification
      public:
	ParameterGNOT(Message & m);
};
class ParameterCHI:public ParameterTwo {	// 0x2d - 0b00101101 - Call history information
      public:
	ParameterCMI(Message & m);
};
class ParameterADI:public ParameterOne {	// 0x2e - 0b00101110 - Access delivery information
      public:
	ParameterADI(Message & m);
};
class ParameterNSF:public ParameterVar {	// 0x2f - 0b00101111 - Network specific facilities @
      public:
	ParameterNSF(Message & m);
};
class ParameterUSIP:public ParameterVar {	// 0x30 - 0b00110000 - User service information prime
      public:
	ParameterUSIP(Message & m);
};
class ParameterPROP:public ParameterTwo {	// 0x31 - 0b00110001 - Propagation delay counter
      public:
	ParameterRPOP(Message & m);
};
class ParameterROPS:public ParameterVar {	// 0x32 - 0b00110010 - Remote operations @
      public:
	ParameterROPS(Message & m);
};
class ParameterSA:public ParameterVar {		// 0x33 - 0b00110011 - Service activation @
      public:
	ParameterSA(Message & m);
};
class ParameterUTI:public ParameterVar {	// 0x34 - 0b00110100 - User teleservice information
      public:
	ParameterUTI(Message & m);
};
class ParameterTMU:public ParameterOne {	// 0x35 - 0b00110101 - Transmission medium used
      public:
	ParameterTMU(Message & m);
};
class ParameterCDI:public ParameterOne {	// 0x36 - 0b00110110 - Call diversion information
      public:
	ParameterCDI(Message & m);
};
class ParameterECI:public ParameterOne {	// 0x37 - 0b00110111 - Echo control information
      public:
	ParameterECI(Message & m);
};
class ParameterMCI:public ParameterOne {	// 0x38 - 0b00111000 - Message compatibility information
      public:
	ParameterMCI(Message & m);
};
class ParameterPCI:public ParameterOne {	// 0x39 - 0b00111001 - Parameter compatibility information
      public:
	ParameterPCI(Message & m);
};
class ParameterMLPP:public ParameterOne {	// 0x3a - 0b00111010 - MLPP preference
      public:
	ParameterMLPP(Message & m);
};
class ParameterMCIQ:public ParameterOne {	// 0x3b - 0b00111011 - MCID request indicator
      public:
	ParameterMCIQ(Message & m);
};
class ParameterMCIR:public ParameterOne {	// 0x3c - 0b00111100 - MCID response indicator
      public:
	ParameterMCIR(Message & m);
};
class ParameterHOPC:public ParameterOne {	// 0x3d - 0b00111101 - Hop counter (reserved)
      public:
	ParameterHOPC(Message & m);
};
class ParameterTMRP:public ParameterOne {	// 0x3e - 0b00111110 - Transmission medium requirement prime
      public:
	ParameterTMRP(Message & m);
};
class ParameterLN:public ParameterVar {		// 0x3f - 0b00111111 - Location number
      public:
	ParameterLN(Message & m);
};
class ParameterRDNR:public ParameterOne {	// 0x40 - 0b01000000 - Redirection number restriction
      public:
	ParameterRDNR(Message & m);
};
class ParameterFREEP:public ParameterOne {	// 0x41 - 0b01000001 - Freephone indicators (reserved)
      public:
	ParameterFREEP(Message & m);
};
class ParameterGREF:public ParameterVar {	// 0x42 - 0b01000010 - Generic reference (reserved)
      public:
	ParameterGREF(Message & m);
};
class ParameterGNUM:public ParameterVar {	// 0xc0 - 0b11000000 - Generic number (address Bellcore)
      public:
	ParameterGNUM(Message & m);
};
class ParameterGDIG:public ParameterVar {	// 0xc1 - 0b11000001 - Generic digits @
      public:
	ParameterGDIG(Message & m);
};
class ParameterEGRESS:public ParameterOne {	// 0xc3 - 0b11000011 - Egress (ANSI)
      public:
	ParameterEGRESS(Message & m);
};
class ParameterJUR:public ParameterVar {	// 0xc4 - 0b11000100 - Jurisdiction (ANSI)
      public:
	ParameterJUR(Message & m);
};
class ParameterCIDC:public ParameterVar {	// 0xc5 - 0b11000101 - Carrier identification code (ANSI)
      public:
	ParameterCIDC(Message & m);
};
class ParameterBGROUP:public ParameterVar {	// 0xc6 - 0b11000110 - Business group (ANSI)
      public:
	ParameterBGROUP(Message & m);
};
class ParameterNOTI:public ParameterOne {	// 0xe1 - 0b11100001 - Notification indicator (ANSI)
      public:
	ParameterNOTI(Message & m);
};
class ParameterSVACT:public ParameterVar {	// 0xe2 - 0b11100010 - Service activation (ANSI)
      public:
	ParameterSVACT(Message & m);
};
class ParameterTRNSRQ:public ParameterVar {	// 0xe3 - 0b11100011 - Transaction request (ANSI,Bellcore)
      public:
	ParameterTRNSRQ(Message & m);
};
class ParameterSPR:public ParameterVar {	// 0xe4 - 0b11100100 - Special processing request (Bellcore)
      public:
	ParameterSPR(Message & m);
};
class ParameterCGCI:public ParameterOne {	// 0xe5 - 0b11100101 - Cc't group char ind (ANSI,Bellcore)
      public:
	ParameterCGCI(Message & m);
};
class ParameterCVRI:public ParameterOne {	// 0xe6 - 0b11100110 - Cc't validation resp ind (ANSI,Bellcore)
      public:
	ParameterCVRI(Message & m);
};
class ParameterOTGN:public ParameterVar {	// 0xe7 - 0b11100111 - Outgoing trunk group numb (ANSI,Bellcore)
      public:
	ParameterOTGN(Message & m);
};
class ParameterCIN:public ParameterVar {	// 0xe8 - 0b11101000 - Circuit ident name (ANSI,Bellcore)
      public:
	ParameterCIN(Message & m);
};
class ParameterCLLI:public ParameterVar {	// 0xe9 - 0b11101001 - Common language loc id (ANSI,Bellcore)
      public:
	ParameterCLLI(Message & m);
};
class ParameterOLI:public ParameterVar {	// 0xea - 0b11101010 - Originating line info (ANSI,Bellcore)
      public:
	ParameterOLI(Message & m);
};
class ParameterCHGN:public ParameterVar {	// 0xeb - 0b11101011 - Charge number (ANSI,Bellcore)
      public:
	ParameterCHGN(Message & m);
};
class ParameterSVCD:public ParameterVar {	// 0xec - 0b11101100 - Service code indicator (ANSI,Bellcore)
      public:
	ParameterSVCD(Message & m);
};
class ParameterCSEL:public ParameterVar {	// 0xee - 0b11101110 - Carrier selection info (ANSI,Bellcore)
      public:
	ParameterCSEL(Message & m);
};
class ParameterORI:public ParameterVar {	// 0xf3 - 0b11110011 - Outgoing route identification (Spain)
      public:
	ParameterORI(Message & m);
};
class ParameterIRI:public ParameterVar {	// 0xf4 - 0b11110100 - Incoming route identification (Spain)
      public:
	ParameterIRI(Message & m);
};
class ParameterRATE:public ParameterVar {	// 0xf8 - 0b11111000 - Rate (Spain)
      public:
	ParameterRATE(Message & m);
};
class ParameterIIC:public ParameterVar {	// 0xf9 - 0b11111001 - Identifier of incoming circuit (Spain)
      public:
	ParameterIIC(Message & m);
};
class ParameterTOI:public ParameterVar {	// 0xfd - 0b11111101 - Trunk offering information (Singapore)
      public:
	ParameterTOI(Message & m);
};
class ParameterTON:public ParameterVar {	// 0xfd - 0b11111101 - Type of notification (Spain)
      public:
	ParameterTON(Message & m);
};
class ParameterCRI:public ParameterOne {	// 0xfe - 0b11111110 - Charge rate information (Singapore)
      public:
	ParameterCRI(Message & m);
};
class ParameterICCI:public ParameterVar {	// 0xff - 0b11111111 - Call charge information (Singapore)
      public:
	ParameterICCI(Message & m);
};

class MessageIAM:public Message {
      public:
	ParameterNCI nci;
	ulong nci;				// nature of connection indicators
	ParameterFCI fci;
	ulong fci;				// forward connection indicators
	ParameterCPC cpc;
	ulong cpc;				// called party category
	ParameterTMR tmr;
	ulong tmr;				// transmission medium requirement
	ParameterUSI usi;
	isup_var_t usi;				// user service information
	ParameterCDPN cdpn;
	isup_var_t cdpn;			// called party number
	 MessageIAM & MessageIAM(RoutingLabel & rl);
};
class MessageSAM:public Message {
      public:
	ParameterSUBN subn;
	isup_var_t subn;			// subsequent number
	 MessageSAM & MessageSAM(RoutingLabel & rl);
};
class MessageINR:public Message {
      public:
	ParameterINRI inri;
	ulong inri;				// information request indicators
	 MessageINR & MessageINR(RoutingLabel & rl);
};
class MessageINF:public Message {
      public:
	ParameterINFI infi;
	ulong infi;				// information indicators
	 MessageINF & MessageINF(RoutingLabel & rl);
};
class MessageCOT:public Message {
      public:
	ParameterCOTI coti;
	ulong coti;				// continuity test indicators
	 MessageCOT & MessageCOT(RoutingLabel & rl);
};
class MessageACM:public Message {
      public:
	ParameterBCI bci;
	ulong bci;				// backwards call indicators
	 MessageACM & MessageACM(RoutingLabel & rl);
};
class MessageCON:public Message {
      public:
	ParameterBCI bci;
	ulong bci;				// backward call indicators
	 MessageCON & MessageCON(RoutingLabel & rl);
};
class MessageFOT:public Message {
      public:
	MessageFOT & MessageFOT(RoutingLabel & rl);
};
class MessageANM:public Message {
      public:
	MessageANM & MessageANM(RoutingLabel & rl);
};
class MessageREL:public Message {
      public:
	ParameterCAUS caus;
	isup_var_t caus;			// cause value
	 MessageREL & MessageREL(RoutingLabel & rl);
};
class MessageSUS:public Message {
      public:
	ParameterSRIS sris;
	ulong sris;				// suspend resume indicators
	 MessageSUS & MessageSUS(RoutingLabel & rl);
};
class MessageRES:public Message {
      public:
	ParameterSRIS sris;
	ulong sris;				// suspend resume indicators
	 MessageRES & MessageRES(RoutingLabel & rl);
};
class MessageRLC:public Message {
      public:
	MessageRLC & MessageRLC(RoutingLabel & rl);
};
class MessageCCR:public Message {
      public:
	MessageCCR & MessageCCR(RoutingLabel & rl);
};
class MessageRSC:public Message {
      public:
	MessageRSC & MessageRSC(RoutingLabel & rl);
};
class MessageBLO:public Message {
      public:
	MessageBLO & MessageBLO(RoutingLabel & rl);
};
class MessageUBL:public Message {
      public:
	MessageUBL & MessageUBL(RoutingLabel & rl);
};
class MessageBLA:public Message {
      public:
	MessageBLA & MessageBLA(RoutingLabel & rl);
};
class MessageUBA:public Message {
      public:
	MessageUBA & MessageUBA(RoutingLabel & rl);
};
class MessageGRS:public Message {
      public:
	ParameterRS rs;
	isup_var_t rs;				// range and status
	 MessageGRS & MessageGRS(RoutingLabel & rl);
};
class MessageCGB:public Message {
      public:
	ParameterCGI cgi;
	ulong cgi;				// circuit state group indicators
	isup_var_t rs;				// range and status
	 MessageCGB & MessageCGB(RoutingLabel & rl);
};
class MessageCGU:public Message {
      public:
	ParameterCGI cgi;
	ulong cgi;				// circuit state group indicators
	isup_var_t rs;				// range and status
	 MessageCGU & MessageCGU(RoutingLabel & rl);
};
class MessageCGBA:public Message {
      public:
	ParameterCGI cgi;
	ulong cgi;				// circuit state group indicators
	isup_var_t rs;				// range and status
	 MessageCGBA & MessageCGBA(RoutingLabel & rl);
};
class MessageCGUA:public Message {
      public:
	ParameterCGI cgi;
	ulong cgi;				// circuit state group indicators
	isup_var_t rs;				// range and status
	 MessageCGUA & MessageCGUA(RoutingLabel & rl);
};
class MessageCMR:public Message {
      public:
	ParameterCMI cmi;
	ulong cmi;				// call modification indicators
	 MessageCMR & MessageCMR(RoutingLabel & rl);
};
class MessageCMC:public Message {
      public:
	ParameterCMI cmi;
	ulong cmi;				// call modification indicators
	 MessageCMC & MessageCMC(RoutingLabel & rl);
};
class MessageCMRJ:public Message {
      public:
	ParameterCMI cmi;
	ulong cmi;				// call modification indicators
	 MessageCMRJ & MessageCMRJ(RoutingLabel & rl);
};
class MessageFAR:public Message {
      public:
	ParameterFACI faci;
	ulong faci;				// facility indicators
	 MessageFAR & MessageFAR(RoutingLabel & rl);
};
class MessageFAA:public Message {
      public:
	ParameterFACI faci;
	ulong faci;				// facility indicators
	 MessageFAA & MessageFAA(RoutingLabel & rl);
};
class MessageFRJ:public Message {
      public:
	ParameterFACI faci;
	ulong faci;				// facility indicators
	ParameterCAUS caus;
	isup_var_t caus;			// cause value
	 MessageFRJ & MessageFRJ(RoutingLabel & rl);
};
class MessageFAD:public Message {
      public:
	ParameterFACI faci;
	ulong faci;				// facility indicators
	 MessageFAD & MessageFAD(RoutingLabel & rl);
};
class MessageFAI:public Message {
      public:
	ParameterFACI faci;
	ulong faci;				// facility indicators
	ParameterFAII faii;
	ulong faii;				// facility information indicators
	 MessageFAI & MessageFAI(RoutingLabel & rl);
};
class MessageLPA:public Message {
      public:
	MessageLPA & MessageLPA(RoutingLabel & rl);
};
class MessageDRS:public Message {
      public:
	MessageDRS & MessageDRS(RoutingLabel & rl);
};
class MessagePAM:public Message {
      public:
	ParameterMSG msg;
	isup_var_t msg;				// encapsulated message
	 MessagePAM & MessagePAM(RoutingLabel & rl);
};
class MessageGRA:public Message {
      public:
	ParameterRS rs;
	isup_var_t rs;				// range and status
	 MessageGRA & MessageGRA(RoutingLabel & rl);
};
class MessageCQM:public Message {
      public:
	ParameterRS rs;
	isup_var_t rs;				// range and status
	 MessageCQM & MessageCQM(RoutingLabel & rl);
};
class MessageCQR:public Message {
      public:
	ParameterRS rs;
	isup_var_t rs;				// range and status
	ParameterCSI csi;
	isup_var_t csi;				// circuit state indicator
	 MessageCQR & MessageCQR(RoutingLabel & rl);
};
class MessageCPG:public Message {
      public:
	ParameterEVENT event;
	ulong evnt;				// event
	 MessageCPG & MessageCPG(RoutingLabel & rl);
};
class MessageUSR:public Message {
      public:
	ParameterUUI uui;
	isup_var_t uui;				// user to user information
	 MessageUSR & MessageUSR(RoutingLabel & rl);
};
class MessageUCIC:public Message {
      public:
	MessageUCIC & MessageUCIC(RoutingLabel & rl);
};
class MessageCFN:public Message {
      public:
	ParameterCAUS caus;
	isup_var_t caus;			// cause value
	 MessageCFN & MessageCFN(RoutingLabel & rl);
};
class MessageOLM:public Message {
      public:
	MessageOLM & MessageOLM(RoutingLabel & rl);
};
class MessageCRG:public Message {
      public:
	ParameterICCI icci;
	isup_var_t icci;			// charge indicators
	 MessageCRG & MessageCRG(RoutingLabel & rl);
};
class MessageNRM:public Message {
      public:
	MessageNRM & MessageNRM(RoutingLabel & rl);
};
class MessageFAC:public Message {
      public:
	MessageFAC & MessageFAC(RoutingLabel & rl);
};
class MessageUPT:public Message {
      public:
	MessageUPT & MessageUPT(RoutingLabel & rl);
};
class MessageUPA:public Message {
      public:
	MessageUPA & MessageUPA(RoutingLabel & rl);
};
class MessageIDR:public Message {
      public:
	MessageIDR & MessageIDR(RoutingLabel & rl);
};
class MessageIRS:public Message {
      public:
	MessageIRS & MessageIRS(RoutingLabel & rl);
};
class MessageSGM:public Message {
      public:
	MessageSGM & MessageSGM(RoutingLabel & rl);
};
class MessageCRA:public Message {
      public:
	MessageCRA & MessageCRA(RoutingLabel & rl);
};
class MessageCRM:public Message {
      public:
	ParameterNCI nci;
	ulong nci;				// nature of connection indicators
	 MessageCRM & MessageCRM(RoutingLabel & rl);
};
class MessageCVR:public Message {
      public:
	ParameterCVRI cvri;
	ulong cvri;
	ParameterCVCI cvci;
	ulong cvci;
	ParameterCGCI cgci;
	ulong cgci;
	 MessageCVR & MessageCVR(RoutingLabel & rl);
};
class MessageCVT:public Message {
      public:
	MessageCVT & MessageCVT(RoutingLabel & rl);
};
class MessageEXM:public Message {
      public:
	MessageEXM & MessageEXM(RoutingLabel & rl);
};
class MessageNON:public Message {
      public:
	ParameterTON ton;
	ulong ton;
	 MessageNON & MessageNON(RoutingLabel & rl);
};
class MessageLLM:public Message {
      public:
	MessageLLM & MessageLLM(RoutingLabel & rl);
};
class MessageCAK:public Message {
      public:
	MessageCAK & MessageCAK(RoutingLabel & rl);
};
class MessageTCM:public Message {
      public:
	ParameterCRI cri;
	ulong cri;
	 MessageTCM & MessageTCM(RoutingLabel & rl);
};
class MessageMCP:public Message {
      public:
	MessageMCP & MessageMCP(RoutingLabel & rl);
};

class Collector {
      public:
	~Collector(void);
	 Collector(void);
	void message(struct strbuf &ctrl, struct strbuf &data);
};

class Circuit {
};

class Call {
};

#endif				


Home Index Prev Next More Download Info FAQ Mail   Home -> Resources -> Browse Source -> strss7/daemons/isupmon/isupmon.hh

OpenSS7
SS7 for the
Common Man
Home Overview Status News Documentation Resources About

© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved.
Last modified: