The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/i4b/include/i4b_l3l4.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1997, 2002 Hellmuth Michaelis. All rights reserved.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions
    6  * are met:
    7  * 1. Redistributions of source code must retain the above copyright
    8  *    notice, this list of conditions and the following disclaimer.
    9  * 2. Redistributions in binary form must reproduce the above copyright
   10  *    notice, this list of conditions and the following disclaimer in the
   11  *    documentation and/or other materials provided with the distribution.
   12  *
   13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   23  * SUCH DAMAGE.
   24  *
   25  *---------------------------------------------------------------------------
   26  *
   27  *      i4b_l3l4.h - layer 3 / layer 4 interface
   28  *      ------------------------------------------
   29  *
   30  * $FreeBSD: releng/5.0/sys/i4b/include/i4b_l3l4.h 101716 2002-08-12 07:53:55Z hm $
   31  *
   32  *      last edit-date: [Sun Aug 11 12:52:41 2002]
   33  *
   34  *---------------------------------------------------------------------------*/
   35 
   36 #ifndef _I4B_L3L4_H_
   37 #define _I4B_L3L4_H_
   38 
   39 #define T303VAL (hz*4)                  /* 4 seconds timeout            */
   40 #define T305VAL (hz*30)                 /* 30 seconds timeout           */
   41 #define T308VAL (hz*4)                  /* 4 seconds timeout            */
   42 #define T309VAL (hz*90)                 /* 90 seconds timeout           */
   43 #define T310VAL (hz*60)                 /* 30-120 seconds timeout       */
   44 #define T313VAL (hz*4)                  /* 4 seconds timeout            */
   45 #define T400DEF (hz*10)                 /* 10 seconds timeout           */
   46 
   47 #define MAX_BCHAN 30
   48 #define N_CALL_DESC (MAX_CONTROLLERS*MAX_BCHAN) /* no of call descriptors */
   49 
   50 extern int nctrl;               /* number of controllers detected in system */
   51 
   52 typedef struct bchan_statistics {
   53         int outbytes;
   54         int inbytes;
   55 } bchan_statistics_t;
   56 
   57 /*---------------------------------------------------------------------------*
   58  * table of things the driver needs to know about the b channel
   59  * it is connected to for data transfer
   60  *---------------------------------------------------------------------------*/
   61 typedef struct i4l_isdn_bchan_linktab {
   62         int unit;
   63         int channel;
   64         void (*bch_config)(int unit, int channel, int bprot, int updown);
   65         void (*bch_tx_start)(int unit, int channel);
   66         void (*bch_stat)(int unit, int channel, bchan_statistics_t *bsp);       
   67         struct ifqueue *tx_queue;
   68         struct ifqueue *rx_queue;       /* data xfer for NON-HDLC traffic   */
   69         struct mbuf **rx_mbuf;          /* data xfer for HDLC based traffic */
   70 } isdn_link_t;
   71 
   72 /*---------------------------------------------------------------------------*
   73  * table of things the b channel handler needs to know  about
   74  * the driver it is connected to for data transfer
   75  *---------------------------------------------------------------------------*/
   76 typedef struct i4l_driver_bchan_linktab {
   77         int unit;
   78         void (*bch_rx_data_ready)(int unit);
   79         void (*bch_tx_queue_empty)(int unit);
   80         void (*bch_activity)(int unit, int rxtx);
   81 #define ACT_RX 0
   82 #define ACT_TX 1
   83         void (*line_connected)(int unit, void *cde);
   84         void (*line_disconnected)(int unit, void *cde);
   85         void (*dial_response)(int unit, int stat, cause_t cause);
   86         void (*updown_ind)(int unit, int updown);               
   87 } drvr_link_t;
   88 
   89 /* global linktab functions for controller types (aka hardware drivers) */
   90 struct ctrl_type_desc {
   91         isdn_link_t* (*get_linktab)(int unit, int channel);
   92         void (*set_linktab)(int unit, int channel, drvr_link_t *dlt);
   93 };
   94 extern struct ctrl_type_desc ctrl_types[];
   95 
   96 /* global linktab functions for RBCH userland driver */
   97 
   98 drvr_link_t *rbch_ret_linktab(int unit);
   99 void rbch_set_linktab(int unit, isdn_link_t *ilt);
  100 
  101 /* global linktab functions for IPR network driver */
  102 
  103 drvr_link_t *ipr_ret_linktab(int unit);
  104 void ipr_set_linktab(int unit, isdn_link_t *ilt);
  105 
  106 /* global linktab functions for TEL userland driver */
  107 
  108 drvr_link_t *tel_ret_linktab(int unit);
  109 void tel_set_linktab(int unit, isdn_link_t *ilt);
  110 
  111 /* global linktab functions for ISPPP userland driver */
  112 
  113 drvr_link_t *i4bisppp_ret_linktab(int unit);
  114 void i4bisppp_set_linktab(int unit, isdn_link_t *ilt);
  115 
  116 /* global linktab functions for ING network driver */
  117 
  118 drvr_link_t *ing_ret_linktab(int unit);
  119 void ing_set_linktab(int unit, isdn_link_t *ilt);
  120 
  121 
  122 /*---------------------------------------------------------------------------*
  123  *      this structure describes one call/connection on one B-channel
  124  *      and all its parameters
  125  *---------------------------------------------------------------------------*/
  126 typedef struct
  127 {
  128         u_int   cdid;                   /* call descriptor id           */
  129         int     controller;             /* isdn controller number       */
  130         int     cr;                     /* call reference value         */
  131 
  132         int     crflag;                 /* call reference flag          */
  133 #define CRF_ORIG        0               /* originating side             */
  134 #define CRF_DEST        1               /* destinating side             */
  135 
  136         int     channelid;              /* channel id value             */
  137         int     channelexcl;            /* channel exclusive            */
  138 
  139         int     bprot;                  /* B channel protocol BPROT_XXX */
  140 
  141         int     bcap;                   /* special bearer capabilities BCAP_XXX */      
  142 
  143         int     driver;                 /* driver to use for B channel  */
  144         int     driver_unit;            /* unit for above driver number */
  145         
  146         cause_t cause_in;               /* cause value from NT  */
  147         cause_t cause_out;              /* cause value to NT    */
  148 
  149         int     call_state;             /* from incoming SETUP  */
  150         
  151         u_char  dst_telno[TELNO_MAX];   /* destination number   */
  152         u_char  dst_subaddr[SUBADDR_MAX];       /* destination subaddr  */
  153         u_char  src_telno[TELNO_MAX];   /* source number        */
  154         u_char  src_subaddr[SUBADDR_MAX];       /* source subaddr       */
  155 
  156         int     dst_ton;                /* destination type of number */
  157         int     src_ton;                /* source type of number */
  158 
  159         int     scr_ind;                /* screening ind for incoming call */
  160         int     prs_ind;                /* presentation ind for incoming call */
  161         
  162         int     Q931state;              /* Q.931 state for call */
  163         int     event;                  /* event to be processed */
  164 
  165         int     response;               /* setup response type  */
  166 
  167         int     T303;                   /* SETUP sent response timeout  */
  168         int     T303_first_to;          /* first timeout flag           */
  169 
  170         int     T305;                   /* DISC without PROG IND        */
  171 
  172         int     T308;                   /* RELEASE sent response timeout*/
  173         int     T308_first_to;          /* first timeout flag           */
  174 
  175         int     T309;                   /* data link disconnect timeout */
  176 
  177         int     T310;                   /* CALL PROC received           */
  178 
  179         int     T313;                   /* CONNECT sent timeout         */ 
  180 
  181         int     T400;                   /* L4 timeout */
  182 
  183         isdn_link_t     *ilt;           /* isdn B channel linktab       */
  184         drvr_link_t     *dlt;           /* driver linktab               */
  185 
  186         int     dir;                    /* outgoing or incoming call    */
  187 #define DIR_OUTGOING    0
  188 #define DIR_INCOMING    1
  189 
  190         int     timeout_active;         /* idle timeout() active flag   */
  191 
  192         int     callouts_inited;        /* must init before use */
  193         struct  callout_handle  idle_timeout_handle;
  194         struct  callout_handle  T303_callout;
  195         struct  callout_handle  T305_callout;
  196         struct  callout_handle  T308_callout;
  197         struct  callout_handle  T309_callout;
  198         struct  callout_handle  T310_callout;
  199         struct  callout_handle  T313_callout;
  200         struct  callout_handle  T400_callout;
  201 
  202         int     idletime_state;         /* wait for idle_time begin     */
  203 #define IST_IDLE        0       /* shorthold mode disabled      */
  204 #define IST_NONCHK      1       /* in non-checked window        */
  205 #define IST_CHECK       2       /* in idle check window         */
  206 #define IST_SAFE        3       /* in safety zone               */
  207 
  208         time_t  idletimechk_start;      /* check idletime window start  */
  209         time_t  connect_time;           /* time connect was made        */
  210         time_t  last_active_time;       /* last time with activity      */
  211 
  212                                         /* for incoming connections:    */
  213         time_t  max_idle_time;          /* max time without activity    */
  214 
  215                                         /* for outgoing connections:    */      
  216         msg_shorthold_t shorthold_data; /* shorthold data to use */
  217 
  218         int     aocd_flag;              /* AOCD used for unitlength calc*/
  219         time_t  last_aocd_time;         /* last time AOCD received      */
  220         int     units;                  /* number of AOCD charging units*/
  221         int     units_type;             /* units type: AOCD, AOCE       */
  222         int     cunits;                 /* calculated units             */
  223 
  224         int     isdntxdelay;            /* isdn tx delay after connect  */
  225 
  226         u_char  display[DISPLAY_MAX];   /* display information element  */
  227         char    datetime[DATETIME_MAX]; /* date/time information element*/
  228         u_char  keypad[KEYPAD_MAX];     /* keypad facility              */      
  229 } call_desc_t;
  230 
  231 extern call_desc_t call_desc[N_CALL_DESC];
  232 
  233 /* forward decl. */
  234 struct isdn_diagnostic_request;
  235 struct isdn_dr_prot;
  236 
  237 /*---------------------------------------------------------------------------*
  238  *      this structure "describes" one controller
  239  *---------------------------------------------------------------------------*/
  240 typedef struct
  241 {
  242         int     unit;                   /* unit number of this contr.   */
  243         int     ctrl_type;              /* controller type   (CTRL_XXX) */
  244         int     card_type;              /* card manufacturer (CARD_XXX) */
  245 
  246         int     protocol;               /* D-channel protocol type */
  247 
  248         int     dl_est;                 /* layer 2 established  */
  249 #define DL_DOWN 0
  250 #define DL_UP   1       
  251 
  252         int     nbch;                   /* number of b channels */
  253         int     bch_state[MAX_BCHAN];   /* states of the b channels */
  254 #define BCH_ST_FREE     0       /* free to be used, idle */
  255 #define BCH_ST_RSVD     1       /* reserved, may become free or used */
  256 #define BCH_ST_USED     2       /* in use for data transfer */
  257 
  258         int     tei;                    /* current tei or -1 if invalid */
  259 
  260         /* pointers to functions to be called from L4 */
  261         
  262         void    (*N_CONNECT_REQUEST)    (unsigned int); 
  263         void    (*N_CONNECT_RESPONSE)   (unsigned int, int, int);
  264         void    (*N_DISCONNECT_REQUEST) (unsigned int, int);
  265         void    (*N_ALERT_REQUEST)      (unsigned int); 
  266         int     (*N_DOWNLOAD)           (int unit, int numprotos, struct isdn_dr_prot *protocols);
  267         int     (*N_DIAGNOSTICS)        (int unit, struct isdn_diagnostic_request*);
  268         void    (*N_MGMT_COMMAND)       (int unit, int cmd, void *);
  269 } ctrl_desc_t;
  270 
  271 extern ctrl_desc_t ctrl_desc[MAX_CONTROLLERS];
  272 
  273 #endif /* _I4B_Q931_H_ */

Cache object: e3da61239ebaa2a9a1927b57cb06d7bf


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.