(Page 1 of 1 in this chapter)


Chapter 3

Message and Parameter Reference


3.1 Data Types
3.2 Common Parameters
3.2.1 Address Parameter
3.2.2 Default Point Code
3.2.3 ITU-T with 24-bit Point Code
3.2.4 Global Title Use
3.2.5 Cause Value Parameter
3.2.6 Credit Parameter
3.2.7 Data Parameter
3.2.8 End of Sequence Parameter
3.2.9 Expedited Data Selection Parameter
3.2.10 Protocol Class Parameter
3.2.11 Receipt Confirmation Selection Parameter
3.2.12 Receive Sequence Number Parameter
3.2.13 Subsystem Multiplicity Indicator Parameter
3.2.14 Subsystem Number Parameter
3.2.15 Subsystem Status Indicator Parameter
3.3 Messages
3.3.1 Connect Request Message
3.3.2 Coordination Request Message
3.3.3 Data Acknowledge Message
3.3.4 Data Request Message
3.3.5 Released Message
3.3.6 Reset Request Message
3.3.7 Unitdata Request Message

This chapter provides the detailed encoding reference for messages passed between the user application and the SS7 SCCP service layer, the parameters which comprise these messages, and the fields contained in the parameters.

3.1 Data Types

The TX Series SCCP API uses the following conventions for primitive data types.
SCCP API Type

`C' Implementation

Description

U8

unsigned char

unsigned 8-bit quantity

U16

unsigned short

unsigned 16-bit quantity

S16

short

signed 16-bit quantity

U32

unsigned long

unsigned 32-bit quantity

S32

long

signed 32-bit quantity

C language definitions for all message structures, parameter structures, field structures, and associated constants are provided in the file <sccpmsgs.h>.

3.2 Common Parameters

The following subsections specify the layout of each of the common parameters that comprise the messages passed between the application and the SS7 SCCP layer implementation.

Note: Many parameters are used in more than one SCCP message types.

3.2.1 Address Parameter

The Address parameter is used to represent a called party address and/or calling party address in many of the SCCP messages.

typedef struct sccpAddr         /* Called/Calling Party Address   */
{  
  U8  presind;             /* presence indicator             */
  U8  swType;              /* switch type (ANSI/ITU-T)       */
  U8  subsystemInd;        /* subsystem indicator            */
  U8  pointCodeInd;        /* point code indicator           */
  U8  glTitleInd;          /* global title indicator         */
  U8  routingInd;          /* routing indicator              */
  U8  natIntInd;           /* national/international ind.    */
  U8  subsystem;           /* subsystem number               */
  U32 pointCode;           /* point code                     */
  U8  glTransType;         /* global title translation type  */
  U8  encoding;            /* address encoding scheme        */
  U8  numPlan;             /* numbering plan                 */
  U8  natAddrInd;          /* nature of address indicator    */
  U8  glTitleLen;          /* length of global title         */
  U8  glTitle[MAX_GLT_SZ]; /* Global Title                   */
} SccpAddr;

The fields in the SccpAddr structure are encoded as follows.

presind

   #define NOT_PRESENT 0   /* field not present in incoming msg
                            * or not included in outgoing msg    */
   #define PRESENT     1   /* field is present in incoming msg 
                            * or to be included in outgoing msg  */
swType

   #define SW_ITU      1   /* ITU operation                      */
   #define SW_ANSI     2   /* ANSI operation                     */

subsystemInd

   #define SUBSYS_NONE 0x00 /* No subsystem number in address    */
   #define SUBSYS_INC  0x01 /* Addr contains subsystem number    */

pointCodeInd

   #define PTCODE_NONE 0x00 /* No point code in address          */
   #define PTCODE_INC  0x01 /* Addr contains point code          */


 

glTitleInd

   #define GLT_NONE     0x00  /* No global title in address           */
   #define GLT_TT_NP_E  0x01  /* ANSI only - Global title includes 
                               * translation type, numbering plan & 
                               * encoding                             */
   #define GLT_TT       0x02  /* ANSI only - Global title includes
                               * translation type only                */
   #define GLT_ITU_FMT1 0x01  /* ITU only - Global title includes 
                               * encoding & nature of address only    */
   #define GLT_ITU_FMT2 0x02  /* ITU only - Global title includes
                               * translation type only                */
   #define GLT_ITU_FMT3 0x03  /* ITU only - Global title includes
                               * translation type, numbering plan & 
                               * encoding                             */ 
   #define GLT_ITU_FMT4 0x04  /* ITU only - Global title includes
                               * translation type, numbering plan,
                               * encoding and nature of address       */
routingInd

   #define ROUTE_GLT    0x00  /* route uses global title only         */
   #define ROUTE_PC_SN  0x01  /* route uses point code + SSN          */

natIntInd

   #define ADDRIND_INT  0x00  /* International addr indicator         */
   #define ADDRIND_NAT  0x01  /* National address indicator           */

subsystem

   #define SUBSYS_NONE     0x00  /* subsystem unknown or not used     */
   #define SUBSYS_SCCPMGMT 0x01  /* SCCP management subsystem         */
   #define SUBSYS_ISUP     0x03  /* ISUP subsystem                    */
   #define SUBSYS_OMAP     0x04  /* operations, maint., admin.        */
   #define SUBSYS_MAP      0x05  /* mobile application part           */
   #define SUBSYS_HLR      0x06  /* home location register            */
   #define SUBSYS_VLR      0x07  /* visitor location register         */
   #define SUBSYS_MSC      0x08  /* mobile switching center           */
   #define SUBSYS_EIR      0x09  /* equipment ident. register         */
   #define SUBSYS_AUTH     0x0A  /* authentication center             */

Other values in range 0x0B - 0xFF are also allowed.

pointCode

A 32 bit quantity of which the least significant 24 bits (ANSI or ITU-T) or the least significant 14 bits (ITU-T) are used. For example, an ANSI point code represented by the (decimal) string 1.4.7 would be encoded as (hex) 0x00010407. If a point code is not included in the called address, then the default point code is used (see Section 3.2.2).

glTransType

This field is used to indicate the translation type when the global title indicator field (glTitleInd) specifies that the global title includes translation type. Any 8-bit value [0x00 - 0xFF] is allowed.

encoding

This field specifies whether the number of digits in the addrSig field is even (and hence the last octet contains 2 digits) or odd (last octet contains only one digit, most significant 4 bits not used).

         #define ENC_UNKNOWN   0x00  /* Encoding unknown             */
         #define ENC_BCD_ODD   0x01  /* BCD, odd number of digits    */
         #define ENC_BCD_EVEN  0x02  /* BCD, even number of digits   */

numPlan

         #define NP_UNK        0x00  /* unknown                      */
         #define NP_ISDN       0x01  /* ISDN/telephony - E.164/E.163 */
         #define NP_TEL        0x02  /* telephony numbering - E.163  */
         #define NP_DATA       0x03  /* data numbering - X.121       */
         #define NP_TELEX      0x04  /* telex numbering-Recomm. F.69 */
         #define NP_MARITIME   0x05  /* Maritime mobile numbering    */
         #define NP_LANDMOB    0x06  /* Land mobile numbering        */
         #define NP_ISDNMOB    0x07  /* ISDN/mobile numbering        */
         #define NP_NATIONAL   0x08  /* natnl standard numbering     */
         #define NP_PRIVATE    0x09  /* private numbering            */
         #define NP_EXT        0x0f  /* reserved for extension       */

natAddrInd

         #define NATIND_SUBS    0x01 /* Subscriber number             */
         #define NATIND_NATL    0x03 /* national number               */
         #define NATIND_INTNATL 0x04 /* international number          */

glTitleLen

This field is encoded as the byte length of the BCD-encoded global title. For example, a 10 digit global title would be BCD encoded as a value with a 5 byte length. So, glTitleLen would be set to 5.

glTitle

The BCD-encoded global title, encoded as follows:
Octet 1

2nd Address Digit

1st (most significant) Address Digit

...

...

...

Octet n

m + 1th Address Digit or Filler

mth Address Digit

Each digit is encoded with the following bit pattern.
Bit Pattern

Digit/Signal

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

spare

1011

code 11

1100

code 12

1101

spare

1110

spare

1111

ST

3.2.2 Default Point Code

If a message is sent from the SCCP API without a called (destination) point code, the SCCP task will send the message to a "default" point code. The default point code is associated with the first ROUTE in the SCCP configuration file. The SCCP message will not encode a called point code in the SCCP header portion of the message.

If similar behavior is desired for a global title transaction, simply remove the DPC field from the Global Title translation (ADDRESS) section in the SCCP configuration file. The message will be sent to the default point code, but will not encode a called point code.

The default point code is supported for protocol Class 0 (connectionless) and Classes 2 and 3 (both of which are connection-oriented). For the connection-oriented protocol classes, the default point code is only used for the Connection Request, as this is the only message that would contain a called point code.

The default point code is NOT supported for protocol class 1 (sequenced connectionless).

3.2.3 ITU-T with 24-bit Point Code

The ITU-T SCCP protocol may be configured to use either 14-bit (2 octet) or 24-bit (3 octet) point codes in outgoing messages. In the NSAP section of the SCCP configuration file, the DPC_LEN field should be set to either 24 or 14. The SWITCH_TYPE does NOT need to be modified.

3.2.4 Global Title Use

When a Global Title is specified by the user, the global title is translated(if possible) by the SCCP task, and the global title is included in the outgoing SCCP address, along with up to four parameters.

The glTransType, encoding, numPlan, and natAddrInd fields are only used in conjunction with the use of a Global Title. Based on the value of the glTitleInd field, some or all of these values are included with a global title in an outgoing SCCP address.

If swType is set to SW_ANSI, there are 2 combinations that may be included with a global title. The glTitleInd field determines which is selected:

global title + translation type (glTitleInd = GLT_TT)


global title + translation type + numbering plan + encoding (GLT_TT_NP_E)
If swType is set to SW_ITU, there are 4 combinations that may be included with a global title. The glTitleInd field determines which is selected:

global title + encoding + nature of address (glTitleInd = GLT_ITU_FMT1)


global title + translation type (GLT_ITU_FMT2)
global title + translation type + numbering plan + encoding (GLT_ITU_FMT3)
global title + translation type + numbering plan + encoding + nature of address (GLT_ITU_FMT4)
If the user wants the Global Title to be passed to another node for translation, the ROUTING_IND field can be defined in one of the ADDR sections in the SCCP configuration file. If ROUTING_IND is set to GLT, the global title is passed along with its routing field set to Route by Global Title. The Point Code (DPC) field is optional, and if the DPC field is not present in the ADDR translation, then a point code is not encoded in the message.

If an SSN field is not present in the ADDRESS translation, then the subsystem field from the Called Address structure is inserted, if present.

Global Title translation is described in the SCCP Configuration section of the SS7 Installation and Configuration Manual. The use of address masks is described, along with the possible replacement of global titles.

3.2.5 Cause Value Parameter

The cause value parameter is used in several SCCP messages to indicate the reason for an error, connection rejection, clearing, or reset.

     typedef U8 SccpCauseVal;

The cause value has different meanings depending on the message it is included in. Pre-defined values for various messages are shown below. Application-specific values are also allowed.

/* Error Cause Values (Error Message)                                     */

#define ECDESTLRN        0  /* unassigned destination local ref. number   */
#define ECSRCLRN         1  /* inconsistent source local reference number */
#define ECPOINTCODE      2  /* point code mismatch                        */
#define ECSERVCLASS      3  /* service class mismatch                     */
#define ECUNQUALIFIED    4  /* unqualified                                */

/* Refusal Cause Values (Connection Refused Message)                      */

#define REFCENDUSER      0  /* end user originated                        */
#define REFCUSERCONG     1  /* end user congested                         */
#define REFCUSERFAIL     2  /* end user failed                            */
#define REFCSCCPUSER     3  /* SCCP user originated                       */
#define REFCDESTUNK      4  /* destination unknown                        */
#define REFCDESTINACC    5  /* destination inaccessible                   */
#define REFCQOSPERM      6  /* QOS not avail (permanent)                  */
#define REFCQOSTRANS     7  /* QOS not avail (transient)                  */
#define REFCACCFAIL      8  /* Access failure                             */
#define REFCACCCONG      9  /* Access congestion                          */
#define REFCSUBSFAIL     10 /* Subsystem failure                          */
#define REFCSUBSCONG     11 /* Subsystem congestion                       */
#define REFCCONNTIMER    12 /* Connection timer expired                   */
#define REFCBADDATA      13 /* Inconsistent user data                     */
#define REFCNOTOBTAIN    14 /* Not obtainable                             */
#define REFCUNQUALIFIED  15 /* unqualified                                */

/* Release Cause Values (Released Message)                                */

#define RELCENDUSER      0  /* end user originated                        */
#define RELCUSERBUSY     1  /* end user busy                              */
#define RELCUSERFAIL     2  /* end user failed                            */
#define RELCSCCPUSER     3  /* SCCP user originated                       */
#define RELCREMPROC      4  /* remote procedure error                     */
#define RELCCONNDATA     5  /* inconsistent connection data               */
#define RELCACCFAIL      6  /* Access failure                             */
#define RELCACCCONG      7  /* Access congestion                          */
#define RELCSUBSFAIL     8  /* Subsystem failure                          */
#define RELCSUBSCONG     9  /* Subsystem congestion                       */
#define RELCNETFAIL      10 /* Network failure                            */
#define RELCNETCONG      11 /* Network congestion                         */
#define RELCRESETTIMER   12 /* Reset timer expired                        */
#define RELCINACT        13 /* Inactivity timer expired                   */
#define RELCNOTOBTAIN    14 /* Not obtainable                             */
#define RELCUNQUALIFIED  15 /* unqualified                                */

/* Reset Cause Values (Reset Request Message)                             */

#define RESCENDUSER      0  /* end user originated                        */
#define RESCSCCPUSER     1  /* SCCP user originated                       */
#define RESCPSERR        2  /* sequence error - bad P(s)                  */
#define RESCPRERR        3  /* sequence error - bad P(r)                  */
#define RESCREMWIN       4  /* message out of window                      */
#define RESCREMPSERR     5  /* bad P(s) after reinit                      */
#define RESCREMGEN       6  /* general remote proc error                  */
#define RESCREMUSER      7  /* remote end user operational                */
#define RESCNETWORK      8  /* network operational                        */
#define RESCACCESS       9  /* Access operational                         */
#define RESCNETCONG      10 /* Network congestion                         */
#define RESCNOTOBTAIN    11 /* Not obtainable                             */
#define RESCUNQUALIFIED  12 /* unqualified                                */

/* Return Cause Values (Class 0 & 1 Returned Messages)                    */

#define RETCGENTRANS     0  /* no translation for address of this nature  */
#define RETCNOTRANS      1  /* no translation for this addr               */
#define RETCSUBSCONG     2  /* Subsystem congestion                       */
#define RETCSUBSFAIL     3  /* Subsystem failure                          */
#define RETCUNQUIP       4  /* unequipped user                            */
#define RETCNETFAIL      5  /* network failure                            */
#define RETCNETCONG      6  /* Network congestion                         */
#define RETCUNQUALIFIED  7  /* unqualified                                */
#define RETCHOPCNT       8  /* hop counter violation                      */

#define RETCMSGXPORT     9    /* error in message transport               */
#define RETCLOCALPROC    10   /* error in local processing                */
#define RETCREASSEMBLY   11   /* destination can't do reassembly          */
#define RETCBADISNI      0xF9 /* invalid ISNI routing request             */
#define RETCAUTH         0xFA /* unauthorized message                     */
#define RETCINCOMPAT     0xFB /* message incompatibility                  */
#define RETCNOISNI       0xFC /* can't do ISNI constrained routing        */
#define RETCREDISNI      0xFD /* redundant ISNI constrained routing
                               * information                              */
#define RETCISNIID       0xFE /* can't do ISNI identification             */

3.2.6 Credit Parameter

The credit parameter contains the window size (i.e., the number of messages that may be sent without receiving an acknowledgment) on a particular SCCP connection. This field is found in the SCCP connection request (CR) and connection confirm (CC) messages.

     typedef U8 SccpCredit;

The credit field is encoded as an unsigned number in the range 1-255.

3.2.7 Data Parameter

This parameter is used to pass user data transparently to the far end point. It is used in many of the SCCP messages.

typedef struct sccpData          
{
  U8   presind;              /* presence indicator       */
  S16  dataLen;              /* length of data           */
  U8   data[MAX_DATA_SZ];    /* user data                */
} SccpData;

The data field is binary data passed transparently to the far end. The byte length of the data is specified in the datalen field.

Note: The maximum message length may not be supported for all message types - see the appropriate ANSI or ITU-T standard for maximum data lengths for messages.

The presind field must be set to indicate whether data is present in the message or not.

3.2.8 End of Sequence Parameter

This parameter is used only with the class 1 service unitdata request to indicate to the SCCP layer that this is the end of a connectionless sequence and the SCCP layer may release resources allocated to this sequence. This parameter has no meaning on incoming unitdata indications.

     typedef U8 SccpEOS;

This field is encoded as follows.

   #define EOS_NO   0     /* not end of sequence                       */
   #define EOS_YES  1     /* end of sequence                           */

3.2.9 Expedited Data Selection Parameter

This parameter is used to select expedited data service on a connection.

     typedef U8 SccpExpDatSel;

This field is encoded as follows:

   #define EDS_NONE  0   /* no expedited data                          */
   #define EDS_REQ   1   /* expedited data requested                   */

 

3.2.10 Protocol Class Parameter

This parameter is used to specify a protocol class in connection request/confirm messages or in connectionless unitdata/extended unitdata messages.

typedef struct sccpProtoClass         
{
  U8   classInd;      /* class indicator                               */
  U8   msgHandling;   /* message handling indicator                    */
} SccpProtoClass;

The fields in the SccpProtoClass structure are encoded as follows.

classInd

   #define SCCP_CLASS0  0x00  /* 0-basic connectionless                */
   #define SCCP_CLASS1  0x01  /* 1-sequenced connectionless            */
   #define SCCP_CLASS2  0x02  /* 2-basic connection-oriented           */
   #define SCCP_CLASS3  0x03  /* 3-connection-oriented w/flow          */

msgHandling

   #define MSG_DISCARD   0x00    /* discard message on error            */
   #define MSG_RETURN    0x08    /* return message on error             */

3.2.11 Receipt Confirmation Selection Parameter

This parameter is used to request the receipt confirmation service on a connection.

     typedef U8 SccpRecConfSel;

This field is encoded as follows.

   #define RCS_NONE    0       /* no receipt confirmation               */
   #define RCS_REQ     1       /* receipt confirmation requested        */

3.2.12 Receive Sequence Number Parameter

This parameter specifies the next expected sequence number in a Data Acknowledgment message.

     typedef U8 SccpNextRS;

The nextRs field is coded to a value in the range 0 - 127.

3.2.13 Subsystem Multiplicity Indicator Parameter

This parameter is used in subsystem coordination indications/confirmations to indicate whether a subsystem is replicated on another node or not.

     typedef U8 SccpSmi;

This field is encoded as follows.

   #define SMI_UNKNOWN  0x00   /* unknown                              */
   #define SMI_SOLO     0x01   /* subsystem not replicated             */
   #define SMI_DUP      0x02   /* subsystem is replicated              */
   #define SMI_DENIED   0x10   /* Indicate denial of coordinate state
                                * change                               */

3.2.14 Subsystem Number Parameter

This parameter is used in subsystem coordination indications/confirmations to indicate whether a subsystem is replicated on another node or not.

     typedef U8 SccpSsn;

This field is encoded as a standard SCCP subsystem number.

3.2.15 Subsystem Status Indicator Parameter

This parameter is used in subsystem/point code state change indications to identify the new state.

     typedef U8 SccpStatus;

This field is encoded as follows.

   #define SP_ACC            0x00   /* Signaling Point Accessible       */
   #define SP_INACC          0x01   /* Signaling Point inaccessible     */
   #define SP_INACC_NODROP   0x06   /* Signaling Point inaccessible,
                                     * connections NOT dropped          */
   #define SS_OOS            0x03   /* Subsystem out of service         */
   #define SS_IS             0x04   /* Subsystem in service             */

3.3 Messages

This section specifies the layout of all messages passed between the application and the SCCP layer implementation.

Note: Parameters tagged with the (M) notation in the comment field of the following definitions are mandatory parameters; parameters tagged with the (O) notation are optional.

3.3.1 Connect Request Message

The connect request message is used by the application to request establishment of a connection (SCCPConnectRqst) or accept an incoming connection (SCCPConnectResp) when employing the SCCP connection-oriented services (class 2 or 3). This message is also received by the application to indicate an incoming connect request from a far end point (SCCPConnectIndication) or indicate an incoming connect confirm from a far end point (SCCPConnectConfirm).

typedef struct sccpConnRqst
{
  SccpProtoClass  protoClass;   /* protocol class           (M)    */
  SccpAddr        calledPty;    /* called party address     (M)    */
  SccpCredit      credit;       /* proposed window size     (M)    */
  SccpAddr        callingPty;   /* calling party addr       (O)    */
  SccpRecConfSel  rcs;          /* recpt confirm selected   (M)    */
  SccpExpDatSel   eds;          /* expedited data selector  (M)    */
  SccpData        data;         /* data                     (O)    */
} SccpConnRqst;

 

3.3.2 Coordination Request Message

The coordination request message is used by the application to request a coordinate state change to a subsystem (SCCPCoordRqst) or accept a coordinated state change (SCCPCoordResp) request from a backup signaling point. This message is also received by the application to indicate an incoming coordinated state change request from a backup signaling point (SCCPCoordIndication) or indicate an incoming coordination confirm from a backup signaling point (SCCPCoordConfirm).

This message is also used as an indication to the application of an unsolicited subsystem state change or signaling point state change.

typedef struct sccpCoordRqst
{
  SccpSsn    aSsn;   /* affected subsystem (M)                           */
  SccpSmi    smi;    /* subsystem multiplicity ind (M - Indication/Confirm 
                      * only)                                            */
  SccpStatus status; /* New status (M - subsystem & SP state change
                      * indications only)                                */
} SccpCoordRqst;

3.3.3 Data Acknowledge Message

The data acknowledge message is used by the application to acknowledge one or more regular or a single expedited data packet from the far end (SCCPDAckRqst) when employing the SCCP connection-oriented services (class 2 or 3). This message is also received by the application to indicate an incoming regular or expedited data ACK packet from a far end point (SCCPDackIndication).

typedef struct sccpDAckRqst
{
  SccpNextRS  rsn;     /* rcv seq. # (M-normal data only- not used for
                        * expedited                                      */
  SccpCredit  credit;  /* window size (M-normal data only- not used for
                        * expedited)                                     */
} SccpDAckRqst;

 

3.3.4 Data Request Message

The data request message is used by the application to send a regular or expedited data packet to the far end (SCCPDataRqst and SCCPEDataRqst) when employing the SCCP connection-oriented services (class 2 or 3). This message is also received by the application to indicate an incoming regular or expedited data packet from a far end point (SCCPDataIndication and SCCPEDataIndication).

typedef struct sccpDataRqst
{
  SccpData   data;    /* data (M)        */
} SccpDataRqst;

3.3.5 Released Message

The released message is used by the application to request clearing of an existing connection (SCCPReleaseRqst) or is received by the application to indicate the far end cleared an existing connection (SCCPReleasedIndication).

This message is also used to refuse an incoming connection request.

typedef struct sccpReleased
{
  SccpCauseVal relCause;  /* release cause (M)                           */ 
  SccpAddr     rspPty;    /* Release indication only- addr of responding
                           * party when outgoing connection refused (O)  */
  SccpData     data;      /* data (O)                                    */
} SccpReleased;

3.3.6 Reset Request Message

The reset message is used by the application to request resetting of an existing connection (SCCPResetRqst) or is received by the application to indicate the far end requested a reset of an existing connection (SCCPResetIndication). This message is not used in the SCCPResetResp and SCCPResetConfirm primitives.

typedef struct sccpResetRqst
{
  SccpCauseVal  resCause;  /* release cause (M-Rqst & Indication only)   */
} SccpResetRqst;

3.3.7 Unitdata Request Message

The unitdata request message is used by the application to send a packet to the far end (SCCPUDataRqst) when employing the SCCP connectionless services (class 0 or 1) or is received by the application to indicate an incoming data packet from a far end point (SCCPUnitdataIndication).

typedef struct sccpUdataRqst
{
  SccpProtoClass  protoClass; /* protocol class       (M)                */
  SccpAddr        calledPty;  /* called party address (M)                */
  SccpAddr        callingPty; /* calling party address(M)                */
  SccpEOS         eos;        /* end-of-sequence flag (M - class 1 only) */
  SccpData        data;       /* data                 (M)                */
} SccpUdataRqst;


(Page 1 of 1 in this chapter)


tech_support@nmss.com
Copyright © 1999, Natural MicroSystems, Inc. All rights reserved.