OpenSS7 STREAMS Interface
This subsection contains a listing of the SDLI header files needed by implementations of both SDL user and SDL provider software.
/*****************************************************************************
@(#) $Id: lmi.h,v 0.7.2.6 2001/02/03 05:48:58 brian Exp $
-----------------------------------------------------------------------------
Copyright (C) 1997-2001 Brian Bidulock <bidulock@dallas.net>
All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
-----------------------------------------------------------------------------
Last Modified $Date: 2001/02/03 05:48:58 $ by $Author: brian $
*****************************************************************************/
#ifndef __LMI_H__
#define __LMI_H__
#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_DSTR_LAST ( 5L + 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_ERROR_IND (-6L - LMI_PROTO_BASE )
#define LMI_STATS_IND (-7L - LMI_PROTO_BASE )
#define LMI_EVENT_IND (-8L - LMI_PROTO_BASE )
#define LMI_USTR_FIRST (-8L - 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_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_ulong 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_ulong 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_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_ulong 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_ulong 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_ulong 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_ulong 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)
#endif __LMI_H__
/*****************************************************************************
@(#) $Id: sdli.h,v 0.7.2.9 2001/02/03 05:48:58 brian Exp $
-----------------------------------------------------------------------------
Copyright (C) 1997-2001 Brian Bidulock <bidulock@dallas.net>
All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
-----------------------------------------------------------------------------
Last Modified $Date: 2001/02/03 05:48:58 $ by $Author: brian $
*****************************************************************************/
#ifndef __SDLI_H__
#define __SDLI_H__
/*
* The purpose of the SDL interface is to provide separation between the
* SDTI (Signalling Data Terminal Interface) which provides SS7 Signalling
* Data Terminal (SDT) state machine services including AERM, SUERM and
* EIM, and the underlying driver which provides essentially HDLC
* capabilities (DAEDR and DAEDT). The interface utilizes some FISU/LSSU
* compression techniques to increase the performance of the interface.
*/
typedef lmi_ulong sdl_ulong;
typedef lmi_ushort sdl_ushort;
typedef lmi_uchar sdl_uchar;
#define SDL_PROTO_BASE 16L
#define SDL_DSTR_FIRST ( 1L + SDL_PROTO_BASE)
#define SDL_DAEDT_TRANSMISSION_REQ ( 1L + SDL_PROTO_BASE)
#define SDL_DAEDT_START_REQ ( 2L + SDL_PROTO_BASE)
#define SDL_DAEDR_START_REQ ( 3L + SDL_PROTO_BASE)
#define SDL_DSTR_LAST ( 3L + SDL_PROTO_BASE)
#define SDL_USTR_FIRST (-1L - SDL_PROTO_BASE)
#define SDL_DAEDR_RECEIVED_BITS_IND (-1L - SDL_PROTO_BASE)
#define SDL_DAEDR_CORRECT_SU_IND (-2L - SDL_PROTO_BASE)
#define SDL_DAEDR_SU_IN_ERROR_IND (-3L - SDL_PROTO_BASE)
#define SDL_USTR_LAST (-3L - SDL_PROTO_BASE)
/*
* SDLI PROTOCOL PRIMITIVES
*/
/*
* SDL_DAEDR_RECEIVED_BITS_IND, M_PROTO, M_PCPROTO or M_DATA
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_DAEDR_RECEIVED_BITS_IND */
sdl_ulong sdl_count;
} sdl_daedr_received_bits_ind_t;
/*
* SDL_DAEDR_START_REQ, M_PROTO or M_PCPROTO
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_DAEDR_START_REQ */
} sdl_daedr_start_req_t;
/*
* SDL_DAEDR_CORRECT_SU_IND, M_PROTO or M_PCPROTO
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_DAEDR_CORRECT_SU_IND */
sdl_ulong sdl_count;
} sdl_daedr_correct_su_ind_t;
/*
* SDL_DAEDR_SU_IN_ERROR_IND, M_PROTO or M_PCPROTO
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_DAEDR_SU_IN_ERROR_IND */
} sdl_daedr_su_in_error_ind_t;
/*
* SDL_DAEDT_START_REQ, M_PROTO or M_PCPROTO
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_DAEDT_START_REQ */
} sdl_daedt_start_req_t;
/*
* SDL_DAEDT_TRANSMISSION_REQ, M_PROTO, M_PCPROTO or M_DATA
*/
typedef struct {
sdl_ulong sdl_primitive; /* SDL_ */
} sdl_daedt_transmission_req_t;
union SDL_primitives {
sdl_ulong sdl_primitive;
sdl_daedr_received_bits_ind_t daedr_received_bits_ind;
sdl_daedr_start_req_t daedr_start_req;
sdl_daedr_correct_su_ind_t daedr_correct_su_ind;
sdl_daedr_su_in_error_ind_t daedr_su_in_error_ind;
sdl_daedt_start_req_t daedt_start_req;
sdl_daedt_transmission_req_t daedt_transmission_req;
};
#define SDL_DAEDR_RECEIVED_BITS_IND_SIZE sizeof(sdl_daedr_received_bits_ind_t)
#define SDL_DAEDR_START_REQ_SIZE sizeof(sdl_daedr_start_req_t)
#define SDL_DAEDR_CORRECT_SU_IND_SIZE sizeof(sdl_daedr_correct_su_ind_t)
#define SDL_DAEDR_SU_IN_ERROR_IND_SIZE sizeof(sdl_daedr_su_in_error_ind_t)
#define SDL_DAEDT_START_REQ_SIZE sizeof(sdl_daedt_start_req_t)
#define SDL_DAEDT_TRANSMISSION_REQ_SIZE sizeof(sdl_daedt_transmission_req_t)
#endif __SDLI_H__
/*****************************************************************************
@(#) $Id: lmi_ioctl.h,v 0.7.2.5 2001/02/03 05:48:58 brian Exp $
-----------------------------------------------------------------------------
Copyright (C) 1997-2001 Brian Bidulock <bidulock@dallas.net>
All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
-----------------------------------------------------------------------------
Last Modified $Date: 2001/02/03 05:48:58 $ by $Author: brian $
*****************************************************************************/
#ifndef __LMI_IOCTL_H__
#define __LMI_IOCTL_H__
/*
* COMMON IOCTL NUMBERS
*/
#define LMI_IOCGOPTIONS 0
#define LMI_IOCSOPTIONS 1
#define LMI_IOCGCONFIG 2
#define LMI_IOCSCONFIG 3
#define LMI_IOCTCONFIG 4
#define LMI_IOCCCONFIG 5
#define LMI_IOCGSTATEM 6
#define LMI_IOCCMRESET 7
#define LMI_IOCGSTATSP 8
#define LMI_IOCSSTATSP 9
#define LMI_IOCGSTATS 10
#define LMI_IOCCSTATS 11
#define LMI_IOCGNOTIFY 12
#define LMI_IOCSNOTIFY 13
#define LMI_IOCCNOTIFY 14
#define LMI_IOC_FIRST 0
#define LMI_IOC_LAST 14
#define LMI_IOC_PRIVATE 32
/*
* PROTOCOL VARIANT AND OPTIONS
*/
typedef struct lmi_option {
lmi_ulong pvar;
lmi_ulong popt;
} lmi_option_t;
enum {
SS7_PVAR_ITUT_88, /* ITU-T protocol variant */
SS7_PVAR_ITUT_93, /* ITU-T protocol variant */
SS7_PVAR_ITUT_96, /* ITU-T protocol variant */
SS7_PVAR_ITUT_00, /* ITU-T protocol variant */
SS7_PVAR_ANSI_88, /* ANSI protocol variant */
SS7_PVAR_ANSI_92, /* ANSI protocol variant */
SS7_PVAR_ANSI_96, /* ANSI protocol variant */
SS7_PVAR_ANSI_00, /* ANSI protocol variant */
SS7_PVAR_ETSI_88, /* ETSI protocol variant */
SS7_PVAR_ETSI_93, /* ETSI protocol variant */
SS7_PVAR_ETSI_96, /* ETSI protocol variant */
SS7_PVAR_ETSI_00, /* ETSI protocol variant */
SS7_PVAR_JTTC_94, /* JTTC protocol variant */
SS7_PVAR_MAX = SS7_PVAR_JTTC_94
};
enum {
SS7_POPT_MPLEV = 0x00000001, /* multiple priority/congestion levels */
SS7_POPT_PCR = 0x00000002, /* preventative cyclic retranlmission */
SS7_POPT_HSL = 0x00000004, /* high speed links */
SS7_POPT_XSN = 0x00000008, /* extended sequence numbers */
SS7_POPT_ALL = 0x0000000f /* all options */
};
/*
* STATISTICS
*/
typedef struct lmi_sta {
lmi_ulong object_id; /* object id for stats */
lmi_ulong colperiod; /* collection period */
lmi_ulong timestamp; /* timestamp end of period */
} lmi_sta_t;
#endif __LMI_IOCTL_H__
/*****************************************************************************
@(#) $Id: sdli_ioctl.h,v 0.7.2.9 2001/02/04 10:41:31 brian Exp $
-----------------------------------------------------------------------------
Copyright (C) 1997-2001 Brian Bidulock <bidulock@dallas.net>
All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
-----------------------------------------------------------------------------
Last Modified $Date: 2001/02/04 10:41:31 $ by $Author: brian $
*****************************************************************************/
#ifndef __SDLI_IOCTL_H__
#define __SDLI_IOCTL_H__
#include <linux/ioctl.h>
#define SDL_IOC_MAGIC 'd'
/*
* PROTOCOL VARIANT AND OPTIONS
*/
#define SDL_IOCGOPTIONS _IOR( SDL_IOC_MAGIC, 0, lmi_option_t )
#define SDL_IOCSOPTIONS _IOW( SDL_IOC_MAGIC, 1, lmi_option_t )
/*
* CONFIGURATION
*/
typedef struct sdl_config {
sdl_ulong N; /* octets per su in octet-counting mode */
sdl_ulong m; /* maximum SIF size */
} sdl_config_t;
#define SDL_IOCGCONFIG _IOR( SDL_IOC_MAGIC, 2, sdl_config_t )
#define SDL_IOCSCONFIG _IOWR( SDL_IOC_MAGIC, 3, sdl_config_t )
#define SDL_IOCTCONFIG _IOWR( SDL_IOC_MAGIC, 4, sdl_config_t )
#define SDL_IOCCCONFIG _IOR( SDL_IOC_MAGIC, 5, sdl_config_t )
/*
* STATE
*/
typedef struct sdl_statem {
sdl_ulong daedt_state;
sdl_ulong daedr_state;
sdl_ulong octet_counting_mode;
} sdl_statem_t;
#define SDL_STATE_IDLE 0x00
#define SDL_STATE_IN_SERVICE 0x01
#define SDL_IOCGSTATEM _IOR( SDL_IOC_MAGIC, 6, sdl_statem_t )
#define SDL_IOCCMRESET _IOR( SDL_IOC_MAGIC, 7, sdl_statem_t )
/*
* STATISTICS
*/
typedef struct sdl_stats {
lmi_ulong header;
sdl_ulong rx_bytes;
sdl_ulong tx_bytes;
sdl_ulong rx_sus;
sdl_ulong tx_sus;
sdl_ulong rx_overruns;
sdl_ulong tx_underruns;
sdl_ulong rx_aborts;
sdl_ulong tx_aborts;
sdl_ulong rx_buffer_overflows;
sdl_ulong tx_buffer_overflows;
sdl_ulong rx_sus_in_error; /* Q.752 Table 1.8 5,30 min */
sdl_ulong tx_sus_in_error;
sdl_ulong rx_sync_transitions;
sdl_ulong rx_bits_octet_counted;
sdl_ulong rx_crc_errors;
sdl_ulong rx_frame_errors;
sdl_ulong rx_frame_overflows;
sdl_ulong rx_frame_too_long;
sdl_ulong rx_frame_too_short;
sdl_ulong rx_residue_errors;
sdl_ulong rx_length_error; /* error in length indicator */
sdl_ulong lead_cts_lost;
sdl_ulong lead_dcd_lost;
sdl_ulong carrier_lost;
} sdl_stats_t;
#define SDL_IOCGSTATSP _IOR( SDL_IOC_MAGIC, 8, sdl_stats_t )
#define SDL_IOCSSTATSP _IOWR( SDL_IOC_MAGIC, 9, sdl_stats_t )
#define SDL_IOCGSTATS _IOR( SDL_IOC_MAGIC, 10, sdl_stats_t )
#define SDL_IOCCSTATS _IOW( SDL_IOC_MAGIC, 11, sdl_stats_t )
/*
* EVENTS
*/
typedef struct sdl_notify {
sdl_ulong sdl_notifications;
} sdl_notify_t;
#define SDL_EVT_LOST_SYNC 0x0000001
#define SDL_EVT_SU_ERROR 0x0000002
#define SDL_EVT_TX_FAIL 0x0000004
#define SDL_EVT_RX_FAIL 0x0000008
#define SDL_IOCGNOTIFY _IOR( SDL_IOC_MAGIC, 12, sdl_notify_t )
#define SDL_IOCSNOTIFY _IOW( SDL_IOC_MAGIC, 13, sdl_notify_t )
#define SDL_IOCCNOTIFY _IOW( SDL_IOC_MAGIC, 14, sdl_notify_t )
#define SDL_IOC_FIRST 0
#define SDL_IOC_LAST 14
#define SDL_IOC_PRIVATE 32
#endif __SDLI_IOCTL_H__
/*****************************************************************************
@(#) $Id: devi_ioctl.h,v 0.7.2.8 2001/02/03 05:48:58 brian Exp $
-----------------------------------------------------------------------------
Copyright (C) 1997-2001 Brian Bidulock <bidulock@dallas.net>
All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
-----------------------------------------------------------------------------
Last Modified $Date: 2001/02/03 05:48:58 $ by $Author: brian $
*****************************************************************************/
#ifndef __DEVI_IOCTL_H__
#define __DEVI_IOCTL_H__
#include <linux/ioctl.h>
#include <asm/spinlock.h>
#define DEV_IOC_MAGIC 'v'
/*
* DEVICE CONFIGURATION
*/
struct sdl;
#ifdef __KERNEL__
typedef struct dev_device {
spinlock_t iflock; /* interface lock */
dev_ulong ifflags; /* interface flags */
dev_ulong iftype; /* interface type */
dev_ulong ifgtype; /* group type */
dev_ulong ifmode; /* interface mode */
dev_ulong ifrate; /* interface rate */
dev_ulong ifclock; /* interface clock */
dev_ulong ifcoding; /* interface coding */
dev_ulong ifleads; /* interface leads */
dev_ulong ifindex; /* interface index */
dev_ulong irq; /* interrupt */
dev_ulong iobase; /* i/o base address */
dev_ulong dma_rx; /* dma receive */
dev_ulong dma_tx; /* dma transmit */
} dev_device_t;
#endif
#define DEV_IOCCIFRESET _IO( DEV_IOC_MAGIC, 0 )
#define DEV_IOCGIFFLAGS _IOW( DEV_IOC_MAGIC, 1, dev_ulong )
#define DEV_IOCSIFFLAGS _IOW( DEV_IOC_MAGIC, 2, dev_ulong )
#define DEV_IF_UP 0x00000001 /* device should set on enable */
#define DEV_IF_RX_RUNNING 0x00000002 /* when Rx running */
#define DEV_IF_TX_RUNNING 0x00000004 /* when Tx running */
#define DEV_IF_SU_COMPRESS 0x00000008 /* when Rx compressing */
#define DEV_IOCGIFTYPE _IOR( DEV_IOC_MAGIC, 3, dev_ulong )
#define DEV_IOCSIFTYPE _IOW( DEV_IOC_MAGIC, 4, dev_ulong )
enum {
DEV_TYPE_NONE,
DEV_TYPE_V35,
DEV_TYPE_DS0,
DEV_TYPE_DS0A,
DEV_TYPE_E1,
DEV_TYPE_T1,
DEV_TYPE_J1,
DEV_TYPE_ATM,
DEV_TYPE_PACKET
};
#define DEV_IOCGGRPTYPE _IOR( DEV_IOC_MAGIC, 5, dev_ulong )
#define DEV_IOCSGRPTYPE _IOW( DEV_IOC_MAGIC, 6, dev_ulong )
enum {
DEV_GTYPE_NONE,
DEV_GTYPE_T1,
DEV_GTYPE_E1,
DEV_GTYPE_J1,
DEV_GTYPE_ATM,
DEV_GTYPE_ETH,
DEV_GTYPE_IP,
DEV_GTYPE_UDP,
DEV_GTYPE_TCP,
DEV_GTYPE_RTP,
DEV_GTYPE_SCTP
};
#define DEV_IOCGIFMODE _IOR( DEV_IOC_MAGIC, 7, dev_ulong )
#define DEV_IOCSIFMODE _IOW( DEV_IOC_MAGIC, 8, dev_ulong )
enum {
DEV_MODE_NONE,
DEV_MODE_DSU,
DEV_MODE_CSU,
DEV_MODE_DTE,
DEV_MODE_DCE,
DEV_MODE_CLIENT,
DEV_MODE_SERVER,
DEV_MODE_PEER,
DEV_MODE_ECHO,
DEV_MODE_REM_LB,
DEV_MODE_LOC_LB,
DEV_MODE_LB_ECHO,
DEV_MODE_TEST
};
#define DEV_IOCGIFRATE _IOR( DEV_IOC_MAGIC, 9, dev_ulong )
#define DEV_IOCSIFRATE _IOW( DEV_IOC_MAGIC, 10, dev_ulong )
#define DEV_IOCGIFCLOCK _IOR( DEV_IOC_MAGIC, 11, dev_ulong )
#define DEV_IOCSIFCLOCK _IOW( DEV_IOC_MAGIC, 12, dev_ulong )
enum {
DEV_CLOCK_NONE,
DEV_CLOCK_INT,
DEV_CLOCK_EXT,
DEV_CLOCK_LOOP,
DEV_CLOCK_MASTER,
DEV_CLOCK_SLAVE,
DEV_CLOCK_DPLL,
DEV_CLOCK_ABR,
DEV_CLOCK_SHAPER
};
#define DEV_IOCGIFCODING _IOR( DEV_IOC_MAGIC, 13, dev_ulong )
#define DEV_IOCSIFCODING _IOW( DEV_IOC_MAGIC, 14, dev_ulong )
enum {
DEV_CODING_NONE,
DEV_CODING_NRZ,
DEV_CODING_NRZI,
DEV_CODING_AMI,
DEV_CODING_B6ZS,
DEV_CODING_B8ZS,
DEV_CODING_ESF, /* FIXME: this is actually a framing value */
DEV_CODING_AAL1,
DEV_CODING_AAL2,
DEV_CODING_AAL5
};
#define DEV_IOCGIFLEADS _IOR( DEV_IOC_MAGIC, 15, dev_ulong )
#define DEV_IOCSIFLEADS _IOW( DEV_IOC_MAGIC, 16, dev_ulong )
#define DEV_IOCCIFLEADS _IOW( DEV_IOC_MAGIC, 17, dev_ulong )
enum {
DEV_LEAD_DTR = 0x01, /* for V.35 DTR lead set or clr */
DEV_LEAD_RTS = 0x02, /* for V.35 RTS lead set or clr */
DEV_LEAD_DCD = 0x04, /* for V.35 DCD lead get */
DEV_LEAD_CTS = 0x08, /* for V.35 CTS lead get */
DEV_LEAD_DSR = 0x10 /* for V.35 DSR lead get */
};
#define DEV_IOCCDISCTX _IO( DEV_IOC_MAGIC, 18 )
#define DEV_IOCCCONNTX _IO( DEV_IOC_MAGIC, 19 )
#define DEV_IOC_FIRST 0
#define DEV_IOC_LAST 19
#define DEV_IOC_PRIVATE 32
#endif __DEVI_IOCTL_H__OpenSS7 |
© Copyright 1997-2001, OpenSS7, All Rights Reserved. Last modified: $Date:$ |