|
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/sli_ioctl.h
#ifndef __SLI_IOCTL_H__
#define __SLI_IOCTL_H__
#ident "@(#) $Name: $($Revision: 0.8.2.3 $) Copyright (c) 1997-2002 OpenSS7 Corporation."
#include <linux/ioctl.h>
/*
* This file is rather Linux specific for now. Linux encodes direction and
* size in upper 16 bits of 32 bit ioctl command. This should make
* transparent ioctl in STREAMS easier for Linux (i.e., all transparent
* ioctls could be converted to I_STR types because size is known).
*
* If using SVR4.2, perhaps these macros should be redefined to something
* which does not accept size and transpartent ioctls would have to be
* provided for in the STREAMS code anyways. Then it would work either way.
*
* Following defines would do the job...
*
* #define _IO(magic,nr) ((magic<<8)+nr)
* #define _IOR(magic,nr,size) ((magic<<8)+nr)
* #define _IOW(magic,nr,size) ((magic<<8)+nr)
* #define _IOWR(magic,nr,size) ((magic<<8)+nr)
*/
#define SL_IOC_MAGIC 'l'
/*
* PROTOCOL VARIANT AND OPTIONS
*/
#define SL_IOCGOPTIONS _IOR( SL_IOC_MAGIC, 0, lmi_option_t )
#define SL_IOCSOPTIONS _IOW( SL_IOC_MAGIC, 1, lmi_option_t )
/*
* CONFIGURATION
*/
typedef struct sl_timers {
sl_ulong t1; /* T1 timer */
sl_ulong t2; /* T2 timer */
sl_ulong t3; /* T3 timer */
sl_ulong t4; /* T4 timer */
sl_ulong t5; /* T5 timer */
sl_ulong t6; /* T6 timer */
sl_ulong t7; /* T7 timer */
} sl_timers_t;
typedef struct sl_config {
sl_ulong t1; /* timer t1 duration (ticks) */
sl_ulong t2; /* timer t2 duration (ticks) */
sl_ulong t2l; /* timer t2l duration (ticks) */
sl_ulong t2h; /* timer t2h duration (ticks) */
sl_ulong t3; /* timer t3 duration (ticks) */
sl_ulong t4n; /* timer t4n duration (ticks) */
sl_ulong t4e; /* timer t4e duration (ticks) */
sl_ulong t5; /* timer t5 duration (ticks) */
sl_ulong t6; /* timer t6 duration (ticks) */
sl_ulong t7; /* timer t7 duration (ticks) */
sl_ulong rb_abate; /* RB cong abatement (#msgs) */
sl_ulong rb_accept; /* RB cong onset accept (#msgs) */
sl_ulong rb_discard; /* RB cong discard (#msgs) */
sl_ulong tb_abate_1; /* lev 1 cong abate (#bytes) */
sl_ulong tb_onset_1; /* lev 1 cong onset (#bytes) */
sl_ulong tb_discd_1; /* lev 1 cong discard (#bytes) */
sl_ulong tb_abate_2; /* lev 1 cong abate (#bytes) */
sl_ulong tb_onset_2; /* lev 1 cong onset (#bytes) */
sl_ulong tb_discd_2; /* lev 1 cong discard (#bytes) */
sl_ulong tb_abate_3; /* lev 1 cong abate (#bytes) */
sl_ulong tb_onset_3; /* lev 1 cong onset (#bytes) */
sl_ulong tb_discd_3; /* lev 1 cong discard (#bytes) */
sl_ulong N1; /* PCR/RTBmax messages (#msg) */
sl_ulong N2; /* PCR/RTBmax octets (#bytes) */
sl_ulong M; /* IAC normal proving periods */
} sl_config_t;
#define SL_IOCGCONFIG _IOWR( SL_IOC_MAGIC, 2, sl_config_t )
#define SL_IOCSCONFIG _IOWR( SL_IOC_MAGIC, 3, sl_config_t )
#define SL_IOCTCONFIG _IOWR( SL_IOC_MAGIC, 4, sl_config_t )
#define SL_IOCCCONFIG _IOWR( SL_IOC_MAGIC, 5, sl_config_t )
/*
* STATE
*/
struct sni {
unsigned short bib;
unsigned short bsn;
unsigned short fib;
unsigned short fsn;
};
typedef struct tx_sni {
struct sni N; /* normal */
struct sni F; /* first in RTB */
struct sni L; /* last in RTB */
struct sni C; /* RTB clear */
struct sni X; /* expected */
struct sni R; /* received */
unsigned char sio; /* SIO for LSSU */
int len; /* len for Tx */
unsigned short ibmsk; /* mask for IB */
unsigned short snmsk; /* mask for SN */
} tx_sni_t;
typedef struct rx_sni {
struct sni X; /* expected */
struct sni F; /* */
struct sni R; /* received */
struct sni T; /* transmitted */
unsigned char sio; /* SIO for LSSU */
int len; /* len for Rx */
unsigned short ibmsk; /* mask for IB */
unsigned short snmsk; /* mask for SN */
} rx_sni_t;
enum {
LSSU_SIO = 0x0, /* */
LSSU_SIN = 0x1, /* normal */
LSSU_SIE = 0x2, /* emergency */
LSSU_SIOS = 0x3, /* out of service */
LSSU_SIPO = 0x4, /* processor outage */
LSSU_SIB = 0x5 /* busy */
};
typedef struct sl_statem {
sl_ulong lsc_state;
sl_ulong local_processor_outage;
sl_ulong remote_processor_outage;
sl_ulong processor_outage;
sl_ulong emergency;
sl_ulong l3_indication_received;
sl_ulong failure_reason; /* added for event notification */
sl_ulong iac_state;
sl_ulong further_proving;
sl_ulong t4v;
sl_ulong Cp;
sl_ushort ib_mask;
sl_ushort sn_mask;
sl_ulong txc_state;
tx_sni_t tx; /* transmit SN's and IB's */
sl_ulong msu_inhibited;
sl_ulong lssu_available;
sl_ulong rtb_full;
sl_ulong clear_rtb;
sl_ulong sib_received;
sl_ulong retrans_cycle;
sl_ulong forced_retransmission;
sl_ulong Cm; /* number of message in transmission buffer */
sl_ulong Ct; /* number of messages in retransmission buffer */
sl_ulong cong_status;
sl_ulong disc_status;
sl_ulong Z;
void *z_ptr; /* actually mblk_t* */
sl_ulong rc_state;
rx_sni_t rx; /* receive SN's and IB's */
sl_ulong rtr; /* retransmission indicator */
sl_ulong unb; /* unreasonable BSN received */
sl_ulong unf; /* unreasonable FIB received */
sl_ulong msu_fisu_accepted; /* proving complete */
sl_ulong abnormal_bsnr; /* received abnormal BSN */
sl_ulong abnormal_fibr; /* received abnormal FIB */
sl_ulong congestion_discard; /* discarding under Rx congest */
sl_ulong congestion_accept; /* accepting under Rx congest */
sl_ulong l2_congestion_detect; /* congestion detected by L2 */
sl_ulong l3_congestion_detect; /* congestion detected by L3 */
sl_ulong Cr; /* number of messages in receive buffer */
sl_ulong cc_state; /* CC state variable */
sl_ulong poc_state; /* POC state variable */
} sl_statem_t;
#define SL_STATE_IDLE 0 /* txc, others */
#define SL_STATE_NORMAL 0 /* cc */
#define SL_STATE_POWER_OFF 0 /* lsc */
#define SL_STATE_BUSY 1 /* cc */
#define SL_STATE_IN_SERVICE 1 /* txc, others */
#define SL_STATE_LOCAL_PROCESSOR_OUTAGE 1 /* poc */
#define SL_STATE_PROVING 1 /* iac */
#define SL_STATE_INITIAL_ALIGNMENT 2 /* lsc */
#define SL_STATE_NOT_ALIGNED 2 /* iac */
#define SL_STATE_REMOTE_PROCESSOR_OUTAGE 2 /* poc */
#define SL_STATE_SLEEPING 2 /* txc */
#define SL_STATE_ALIGNED 3 /* iac */
#define SL_STATE_ALIGNED_NOT_READY 3 /* lsc */
#define SL_STATE_BOTH_PROCESSORS_OUT 3 /* poc */
#define SL_STATE_ALIGNED_READY 4 /* lsc */
#define SL_STATE_OUT_OF_SERVICE 5 /* lsc */
#define SL_STATE_PROCESSOR_OUTAGE 6 /* lsc */
#define SL_IOCGSTATEM _IOR( SL_IOC_MAGIC, 6, sl_statem_t )
#define SL_IOCCMRESET _IOR( SL_IOC_MAGIC, 7, sl_statem_t )
/*
* -----------------------------------------------------------------------
*
* STATISTICS
*
* -----------------------------------------------------------------------
*/
typedef struct sl_stats {
lmi_sta_t header;
/**/ sl_ulong sl_dur_in_service; /* Q.752 Table 1.1 30 min */
sl_ulong sl_fail_align_or_proving; /* Q.752 Table 1.7 5,30 min */
sl_ulong sl_nacks_received; /* Q.752 Table 1.9 5,30 min */
sl_ulong sl_dur_unavail; /* Q.752 Table 2.1 30 min */
sl_ulong sl_dur_unavail_failed; /* Q.752 Table 2.7 30 min */
sl_ulong sl_dur_unavail_rpo; /* Q.752 Table 2.9 30 min */
sl_ulong sl_sibs_sent; /* Q.752 Table 2.15 5,30 min */
sl_ulong sl_tran_sio_sif_octets; /* Q.752 Table 3.1 5,30 min - trasmitted first time */
sl_ulong sl_retrans_octets; /* Q.752 Table 3.2 5,30 min - includes opening flag and crc */
sl_ulong sl_tran_msus; /* Q.752 Table 3.3 5,30 min - transmitted first time */
sl_ulong sl_recv_sio_sif_octets; /* Q.752 Table 3.4 5,30 min */
sl_ulong sl_recv_msus; /* Q.752 Table 3.5 5,30 min - passed to L3 */
sl_ulong sl_cong_onset_ind[4]; /* Q.752 Table 3.6 5,30 min - and 3.9 */
sl_ulong sl_dur_cong_status[4]; /* Q.752 Table 3.7 30 min - rising only */
/* sl_ulong sl_msus_cong_discard; Q.752 Table 3.10 5,30 min - Not here in MTP or SLS */
sl_ulong sl_cong_discd_ind[4]; /* Q.752 Table 3.11 5,30 min - rising only when < onset */
} sl_stats_t; /* FIXME: read 3.11 and recheck congestion procedures */
#define SL_IOCGSTATSP _IOR( SL_IOC_MAGIC, 8, lmi_sta_t )
#define SL_IOCSSTATSP _IOWR( SL_IOC_MAGIC, 9, lmi_sta_t )
#define SL_IOCGSTATS _IOR( SL_IOC_MAGIC, 10, sl_stats_t )
#define SL_IOCCSTATS _IOW( SL_IOC_MAGIC, 11, sl_stats_t )
/*
* NOTIFICATIONS
*/
typedef struct sl_notify {
sl_ulong events;
} sl_notify_t;
#define SL_EVENT_HEADER_LEN 16 /* for now */
#define SL_EVT_FAIL_UNSPECIFIED SL_FAIL_UNSPECIFIED
#define SL_EVT_FAIL_CONG_TIMEOUT SL_FAIL_CONG_TIMEOUT /* Q.752 Table 1.6 */
#define SL_EVT_FAIL_ACK_TIMEOUT SL_FAIL_ACK_TIMEOUT /* Q.752 Table 1.4 */
#define SL_EVT_FAIL_ABNORMAL_BSNR SL_FAIL_ABNORMAL_BSNR
#define SL_EVT_FAIL_ABNORMAL_FIBR SL_FAIL_ABNORMAL_FIBR
#define SL_EVT_FAIL_ABORMAL SL_FAIL_ABNORMAL_BSNR | \
SL_FAIL_ABNORMAL_FIBR /* Q.752 Table 1.3 */
#define SL_EVT_FAIL_SUERM_EIM SL_FAIL_SUERM_EIM /* Q.752 Table 1.5 */
#define SL_EVT_FAIL_ALIGNMENT SL_FAIL_ALIGNMENT_NOT_POSSIBLE
#define SL_EVT_FAIL_RECEIVED_SIO SL_FAIL_RECEIVED_SIO
#define SL_EVT_FAIL_RECEIVED_SIN SL_FAIL_RECEIVED_SIN
#define SL_EVT_FAIL_RECEIVED_SIE SL_FAIL_RECEIVED_SIE
#define SL_EVT_FAIL_RECEIVED_SIOS SL_FAIL_RECEIVED_SIOS
#define SL_EVT_FAIL_T1_TIMEOUT SL_FAIL_T1_TIMEOUT
#define SL_EVT_RPO_BEGIN SL_FAIL_T1_TIMEOUT <<1 /* Q.752 Table 2.10 */
#define SL_EVT_RPO_END SL_EVT_RPO_BEGIN <<1 /* Q.752 Table 2.11 */
#define SL_EVT_CONGEST_ONSET_IND SL_EVT_RPO_END <<1 /* Q.752 Table 3.6 1st&D */
#define SL_EVT_CONGEST_DISCD_IND SL_EVT_CONGEST_ONSET_IND<<1 /* Q.752 Table 3.11 1st&D */
#define SL_EVT_FAIL_ALL_REASONS SL_FAIL_UNSPECIFIED \
|SL_FAIL_CONG_TIMEOUT \
|SL_FAIL_ACK_TIMEOUT \
|SL_FAIL_ABNORMAL_FIBR \
|SL_FAIL_ABNORMAL_BSNR \
|SL_FAIL_SUERM_EIM \
|SL_FAIL_ALIGNMENT_NOT_POSSIBLE \
|SL_FAIL_RECEIVED_SIO \
|SL_FAIL_RECEIVED_SIN \
|SL_FAIL_RECEIVED_SIE \
|SL_FAIL_RECEIVED_SIOS \
|SL_FAIL_T1_TIMEOUT /* Q.752 Table 1.2 */
#define SL_IOCGNOTIFY _IOR( SL_IOC_MAGIC, 12, sl_notify_t )
#define SL_IOCSNOTIFY _IOW( SL_IOC_MAGIC, 13, sl_notify_t )
#define SL_IOCCNOTIFY _IOW( SL_IOC_MAGIC, 14, sl_notify_t )
#define SL_IOC_FIRST 0
#define SL_IOC_LAST 14
#define SL_IOC_PRIVATE 32
#endif /* __SLI_IOCTL_H__ */
|
|||||||||||||||||||||||||||
|
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
|
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
|||||||||||||||||||||||||||