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. |