OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
File /code/strss7/include/ss7/lmi.h#ifndef __LMI_H__ #define __LMI_H__ #ident "@(#) $Name: $($Revision: 0.8.2.3 $) Copyright (c) 1997-2002 OpenSS7 Corporation." #define LMI_PROTO_BASE 0L #define LMI_DSTR_FIRST ( 1L + LMI_PROTO_BASE ) #define LMI_INFO_REQ ( 1L + LMI_PROTO_BASE ) #define LMI_ATTACH_REQ ( 2L + LMI_PROTO_BASE ) #define LMI_DETACH_REQ ( 3L + LMI_PROTO_BASE ) #define LMI_ENABLE_REQ ( 4L + LMI_PROTO_BASE ) #define LMI_DISABLE_REQ ( 5L + LMI_PROTO_BASE ) #define LMI_OPTMGMT_REQ ( 6L + LMI_PROTO_BASE ) #define LMI_DSTR_LAST ( 6L + LMI_PROTO_BASE ) #define LMI_USTR_LAST (-1L - LMI_PROTO_BASE ) #define LMI_INFO_ACK (-1L - LMI_PROTO_BASE ) #define LMI_OK_ACK (-2L - LMI_PROTO_BASE ) #define LMI_ERROR_ACK (-3L - LMI_PROTO_BASE ) #define LMI_ENABLE_CON (-4L - LMI_PROTO_BASE ) #define LMI_DISABLE_CON (-5L - LMI_PROTO_BASE ) #define LMI_OPTMGMT_ACK (-6L - LMI_PROTO_BASE ) #define LMI_ERROR_IND (-7L - LMI_PROTO_BASE ) #define LMI_STATS_IND (-8L - LMI_PROTO_BASE ) #define LMI_EVENT_IND (-9L - LMI_PROTO_BASE ) #define LMI_USTR_FIRST (-9L - LMI_PROTO_BASE ) #define LMI_UNATTACHED 1L /* No PPA attached, awating LMI_ATTACH_REQ */ #define LMI_ATTACH_PENDING 2L /* Waiting for attach */ #define LMI_UNUSABLE 3L /* Device cannot be used, STREAM in hung state */ #define LMI_DISABLED 4L /* PPA attached, awaiting LMI_ENABLE_REQ */ #define LMI_ENABLE_PENDING 5L /* Waiting to send LMI_ENABLE_CON */ #define LMI_ENABLED 6L /* Ready for use, awaiting primtiive exchange */ #define LMI_DISABLE_PENDING 7L /* Waiting to send LMI_DISABLE_CON */ #define LMI_DETACH_PENDING 8L /* Waiting for detach */ /* * LMI_ERROR_ACK and LMI_ERROR_IND reason codes */ #define LMI_UNSPEC 0x00000000 /* Unknown or unspecified */ #define LMI_BADADDRESS 0x00010000 /* Address was invalid */ #define LMI_BADADDRTYPE 0x00020000 /* Invalid address type */ #define LMI_BADDIAL 0x00030000 /* (not used) */ #define LMI_BADDIALTYPE 0x00040000 /* (not used) */ #define LMI_BADDISPOSAL 0x00050000 /* Invalid disposal parameter */ #define LMI_BADFRAME 0x00060000 /* Defective SDU received */ #define LMI_BADPPA 0x00070000 /* Invalid PPA identifier */ #define LMI_BADPRIM 0x00080000 /* Unregognized primitive */ #define LMI_DISC 0x00090000 /* Disconnected */ #define LMI_EVENT 0x000a0000 /* Protocol-specific event ocurred */ #define LMI_FATALERR 0x000b0000 /* Device has become unusable */ #define LMI_INITFAILED 0x000c0000 /* Link initialization failed */ #define LMI_NOTSUPP 0x000d0000 /* Primitive not supported by this device */ #define LMI_OUTSTATE 0x000e0000 /* Primitive was issued from invalid state */ #define LMI_PROTOSHORT 0x000f0000 /* M_PROTO block too short */ #define LMI_SYSERR 0x00100000 /* UNIX system error */ #define LMI_WRITEFAIL 0x00110000 /* Unitdata request failed */ #define LMI_CRCERR 0x00120000 /* CRC or FCS error */ #define LMI_DLE_EOT 0x00130000 /* DLE EOT detected */ #define LMI_FORMAT 0x00140000 /* Format error detected */ #define LMI_HDLC_ABORT 0x00150000 /* Aborted frame detected */ #define LMI_OVERRUN 0x00160000 /* Input overrun */ #define LMI_TOOSHORT 0x00170000 /* Frame too short */ #define LMI_INCOMPLETE 0x00180000 /* Partial frame received */ #define LMI_BUSY 0x00190000 /* Telephone was busy */ #define LMI_NOANSWER 0x001a0000 /* Connection went unanswered */ #define LMI_CALLREJECT 0x001b0000 /* Connection rejected */ #define LMI_HDLC_IDLE 0x001c0000 /* HDLC line went idle */ #define LMI_HDLC_NOTIDLE 0x001d0000 /* HDLC link no longer idle */ #define LMI_QUIESCENT 0x001e0000 /* Line being reassigned */ #define LMI_RESUMED 0x001f0000 /* Line has been reassigned */ #define LMI_DSRTIMEOUT 0x00200000 /* Did not see DSR in time */ #define LMI_LAN_COLLISIONS 0x00210000 /* LAN excessive collisions */ #define LMI_LAN_REFUSED 0x00220000 /* LAN message refused */ #define LMI_LAN_NOSTATION 0x00230000 /* LAN no such station */ #define LMI_LOSTCTS 0x00240000 /* Lost Clear to Send signal */ #define LMI_DEVERR 0x00250000 /* Start of device-specific error codes */ typedef signed long lmi_long; typedef unsigned long lmi_ulong; typedef unsigned short lmi_ushort; typedef unsigned char lmi_uchar; /* * LOCAL MANAGEMENT PRIMITIVES */ /* LMI_INFO_REQ, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_INFO_REQ */ } lmi_info_req_t; /* LMI_INFO_ACK, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_INFO_ACK */ lmi_ulong lmi_version; lmi_ulong lmi_state; lmi_ulong lmi_max_sdu; lmi_ulong lmi_min_sdu; lmi_ulong lmi_header_len; lmi_ulong lmi_ppa_style; lmi_uchar lmi_ppa_addr[0]; } lmi_info_ack_t; /* * LMI provider style. * * The LMI provider style which determines whether a provider requires an * LMI_ATTACH_REQ to inform the provider which PPA user messages should be * sent/received on. */ #define LMI_STYLE1 0x00 /* PPA is implicitly bound by open(2) */ #define LMI_STYLE2 0x01 /* PPA must be explicitly bound via STD_ATTACH_REQ */ /* LMI_ATTACH_REQ, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_ATTACH_REQ */ lmi_uchar lmi_ppa[0]; } lmi_attach_req_t; /* LMI_DETACH_REQ, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_DETACH_REQ */ } lmi_detach_req_t; /* LMI_ENABLE_REQ, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_ENABLE_REQ */ lmi_uchar lmi_rem[0]; } lmi_enable_req_t; /* LMI_DISABLE_REQ, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_DISABLE_REQ */ } lmi_disable_req_t; /* LMI_OK_ACK, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_OK_ACK */ lmi_long lmi_correct_primitive; lmi_ulong lmi_state; } lmi_ok_ack_t; /* LMI_ERROR_ACK, M_CTL */ typedef struct { lmi_long lmi_primitive; /* LMI_ERROR_ACK */ lmi_ulong lmi_errno; lmi_ulong lmi_reason; lmi_long lmi_error_primitive; lmi_ulong lmi_state; } lmi_error_ack_t; /* LMI_ENABLE_CON, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_ENABLE_CON */ lmi_ulong lmi_state; } lmi_enable_con_t; /* LMI_DISABLE_CON, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_DISABLE_CON */ lmi_ulong lmi_state; } lmi_disable_con_t; /* LMI_OPTMGMT_REQ, M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_OPTMGMT_REQ */ lmi_ulong lmi_opt_length; lmi_ulong lmi_opt_offset; lmi_ulong lmi_mgmt_flags; } lmi_optmgmt_req_t; /* LMI_OPTMGMT_ACK, M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_OPMGMT_ACK */ lmi_ulong lmi_opt_length; lmi_ulong lmi_opt_offset; lmi_ulong lmi_mgmt_flags; } lmi_optmgmt_ack_t; #define LMI_NEGOTIATE 0x0004 #define LMI_CHECK 0x0008 #define LMI_DEFAULT 0x0010 #define LMI_SUCCESS 0x0020 #define LMI_FAILURE 0x0040 #define LMI_CURRENT 0x0080 #define LMI_PARTSUCCESS 0x0100 #define LMI_READONLY 0x0200 #define LMI_NOTSUPPORT 0x0400 /* LMI_ERROR_IND, M_PROTO or M_PCPROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_ERROR_IND */ lmi_ulong lmi_errno; lmi_ulong lmi_reason; lmi_ulong lmi_state; } lmi_error_ind_t; /* LMI_STATS_IND, M_PROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_STATS_IND */ lmi_ulong lmi_interval; lmi_ulong lmi_timestamp; } lmi_stats_ind_t; /* LMI_EVENT_IND, M_PROTO */ typedef struct { lmi_long lmi_primitive; /* LMI_EVENT_IND */ lmi_ulong lmi_objectid; lmi_ulong lmi_timestamp; lmi_ulong lmi_severity; } lmi_event_ind_t; union LMI_primitive { lmi_long lmi_primitive; lmi_ok_ack_t ok_ack; lmi_error_ack_t error_ack; lmi_error_ind_t error_ind; lmi_stats_ind_t stats_ind; lmi_event_ind_t event_ind; }; union LMI_primitives { lmi_long lmi_primitive; lmi_info_req_t info_req; lmi_info_ack_t info_ack; lmi_attach_req_t attach_req; lmi_detach_req_t detach_req; lmi_enable_req_t enable_req; lmi_disable_req_t disable_req; lmi_ok_ack_t ok_ack; lmi_error_ack_t error_ack; lmi_enable_con_t enable_con; lmi_disable_con_t disable_con; lmi_error_ind_t error_ind; lmi_stats_ind_t stats_ind; lmi_event_ind_t event_ind; }; #define LMI_INFO_REQ_SIZE sizeof(lmi_info_req_t) #define LMI_INFO_ACK_SIZE sizeof(lmi_info_ack_t) #define LMI_ATTACH_REQ_SIZE sizeof(lmi_attach_req_t) #define LMI_DETACH_REQ_SIZE sizeof(lmi_detach_req_t) #define LMI_ENABLE_REQ_SIZE sizeof(lmi_enable_req_t) #define LMI_DISABLE_REQ_SIZE sizeof(lmi_disable_req_t) #define LMI_OK_ACK_SIZE sizeof(lmi_ok_ack_t) #define LMI_ERROR_ACK_SIZE sizeof(lmi_error_ack_t) #define LMI_ENABLE_CON_SIZE sizeof(lmi_enable_con_t) #define LMI_DISABLE_CON_SIZE sizeof(lmi_disable_con_t) #define LMI_ERROR_IND_SIZE sizeof(lmi_error_ind_t) #define LMI_STATS_IND_SIZE sizeof(lmi_stats_ind_t) #define LMI_EVENT_IND_SIZE sizeof(lmi_event_ind_t) typedef struct lmi_opthdr { lmi_ulong level; lmi_ulong name; lmi_ulong length; lmi_ulong status; lmi_uchar value[0]; /* followed by option value */ } lmi_opthdr_t; #define LMI_LEVEL_COMMON '\0' #define LMI_LEVEL_SDL 'd' #define LMI_LEVEL_SDT 't' #define LMI_LEVEL_SL 'l' #define LMI_LEVEL_SLS 's' #define LMI_LEVEL_MTP 'M' #define LMI_LEVEL_SCCP 'S' #define LMI_LEVEL_ISUP 'I' #define LMI_LEVEL_TCAP 'T' #define LMI_OPT_PROTOCOL 1 /* use struct lmi_option */ #define LMI_OPT_STATISTICS 2 /* use struct lmi_sta */ #endif /* __LMI_H__ */
|
|||||||||||||||||||||||||||
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |