OpenSS7 STREAMS Interface

2.10. Header File 

This subsection contains a listing of the SDLI header files needed by implementations of both SDL user and SDL provider software. 

 


2.10.1. Header File <ss7/lmi.h> 

 

/*****************************************************************************

 @(#) $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__


2.10.2. Header File <ss7/sdli.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__


2.10.3. Header File <ss7/lmi_ioctl.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__


2.10.4. Header File <ss7/sdli_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__

Home Index Prev Next More Download Info FAQ Mail

OpenSS7

OpenSS7,

© Copyright 1997-2001, OpenSS7, All Rights Reserved.

Last modified: $Date:$