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/netisdn/i4b_capi_msgs.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 /*      $NetBSD: i4b_capi_msgs.h,v 1.1 2003/09/25 15:34:38 pooka Exp $  */
    2 
    3 /*
    4  * Copyright (c) 2001-2003 Cubical Solutions Ltd. All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  *
   27  * capi/capi_msgs.h     The CAPI i4b message and handler declarations.
   28  *
   29  * $FreeBSD: src/sys/i4b/capi/capi_msgs.h,v 1.1 2001/05/25 08:39:31 hm Exp $
   30  */
   31 
   32 #ifndef _I4B_CAPI_MSGS_H_
   33 #define _I4B_CAPI_MSGS_H_
   34 
   35 /* CAPI commands */
   36 
   37 #define CAPI_ALERT                   0x01
   38 #define CAPI_CONNECT                 0x02
   39 #define CAPI_CONNECT_ACTIVE          0x03
   40 #define CAPI_CONNECT_B3              0x82
   41 #define CAPI_CONNECT_B3_ACTIVE       0x83
   42 #define CAPI_CONNECT_B3_T90_ACTIVE   0x88
   43 #define CAPI_DATA_B3                 0x86
   44 #define CAPI_DISCONNECT_B3           0x84
   45 #define CAPI_DISCONNECT              0x04
   46 #define CAPI_FACILITY                0x80
   47 #define CAPI_INFO                    0x08
   48 #define CAPI_LISTEN                  0x05
   49 #define CAPI_MANUFACTURER            0xff
   50 #define CAPI_RESET_B3                0x87
   51 #define CAPI_SELECT_B_PROTOCOL       0x41
   52 
   53 /* CAPI subcommands */
   54 
   55 #define CAPI_REQ                     0x80
   56 #define CAPI_CONF                    0x81
   57 #define CAPI_IND                     0x82
   58 #define CAPI_RESP                    0x83
   59 
   60 /* CAPI combined commands */
   61 
   62 #define CAPICMD(cmd,subcmd)          (((subcmd)<<8)|(cmd))
   63 
   64 #define CAPI_DISCONNECT_REQ          CAPICMD(CAPI_DISCONNECT,CAPI_REQ)
   65 #define CAPI_DISCONNECT_CONF         CAPICMD(CAPI_DISCONNECT,CAPI_CONF)
   66 #define CAPI_DISCONNECT_IND          CAPICMD(CAPI_DISCONNECT,CAPI_IND)
   67 #define CAPI_DISCONNECT_RESP         CAPICMD(CAPI_DISCONNECT,CAPI_RESP)
   68 
   69 #define CAPI_ALERT_REQ               CAPICMD(CAPI_ALERT,CAPI_REQ)
   70 #define CAPI_ALERT_CONF              CAPICMD(CAPI_ALERT,CAPI_CONF)
   71 
   72 #define CAPI_CONNECT_REQ             CAPICMD(CAPI_CONNECT,CAPI_REQ)
   73 #define CAPI_CONNECT_CONF            CAPICMD(CAPI_CONNECT,CAPI_CONF)
   74 #define CAPI_CONNECT_IND             CAPICMD(CAPI_CONNECT,CAPI_IND)
   75 #define CAPI_CONNECT_RESP            CAPICMD(CAPI_CONNECT,CAPI_RESP)
   76 
   77 #define CAPI_CONNECT_ACTIVE_REQ      CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_REQ)
   78 #define CAPI_CONNECT_ACTIVE_CONF     CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_CONF)
   79 #define CAPI_CONNECT_ACTIVE_IND      CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_IND)
   80 #define CAPI_CONNECT_ACTIVE_RESP     CAPICMD(CAPI_CONNECT_ACTIVE,CAPI_RESP)
   81 
   82 #define CAPI_SELECT_B_PROTOCOL_REQ   CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_REQ)
   83 #define CAPI_SELECT_B_PROTOCOL_CONF  CAPICMD(CAPI_SELECT_B_PROTOCOL,CAPI_CONF)
   84 
   85 #define CAPI_CONNECT_B3_REQ          CAPICMD(CAPI_CONNECT_B3,CAPI_REQ)
   86 #define CAPI_CONNECT_B3_CONF         CAPICMD(CAPI_CONNECT_B3,CAPI_CONF)
   87 #define CAPI_CONNECT_B3_IND          CAPICMD(CAPI_CONNECT_B3,CAPI_IND)
   88 #define CAPI_CONNECT_B3_RESP         CAPICMD(CAPI_CONNECT_B3,CAPI_RESP)
   89 
   90 #define CAPI_CONNECT_B3_ACTIVE_REQ   CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_REQ)
   91 #define CAPI_CONNECT_B3_ACTIVE_CONF  CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_CONF)
   92 #define CAPI_CONNECT_B3_ACTIVE_IND   CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_IND)
   93 #define CAPI_CONNECT_B3_ACTIVE_RESP  CAPICMD(CAPI_CONNECT_B3_ACTIVE,CAPI_RESP)
   94 
   95 #define CAPI_CONNECT_B3_T90_ACTIVE_IND CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_IND)
   96 #define CAPI_CONNECT_B3_T90_ACTIVE_RESP CAPICMD(CAPI_CONNECT_B3_T90_ACTIVE,CAPI_RESP)
   97 
   98 #define CAPI_DATA_B3_REQ             CAPICMD(CAPI_DATA_B3,CAPI_REQ)
   99 #define CAPI_DATA_B3_CONF            CAPICMD(CAPI_DATA_B3,CAPI_CONF)
  100 #define CAPI_DATA_B3_IND             CAPICMD(CAPI_DATA_B3,CAPI_IND)
  101 #define CAPI_DATA_B3_RESP            CAPICMD(CAPI_DATA_B3,CAPI_RESP)
  102 
  103 #define CAPI_DISCONNECT_B3_REQ       CAPICMD(CAPI_DISCONNECT_B3,CAPI_REQ)
  104 #define CAPI_DISCONNECT_B3_CONF      CAPICMD(CAPI_DISCONNECT_B3,CAPI_CONF)
  105 #define CAPI_DISCONNECT_B3_IND       CAPICMD(CAPI_DISCONNECT_B3,CAPI_IND)
  106 #define CAPI_DISCONNECT_B3_RESP      CAPICMD(CAPI_DISCONNECT_B3,CAPI_RESP)
  107 
  108 #define CAPI_RESET_B3_REQ            CAPICMD(CAPI_RESET_B3,CAPI_REQ)
  109 #define CAPI_RESET_B3_CONF           CAPICMD(CAPI_RESET_B3,CAPI_CONF)
  110 #define CAPI_RESET_B3_IND            CAPICMD(CAPI_RESET_B3,CAPI_IND)
  111 #define CAPI_RESET_B3_RESP           CAPICMD(CAPI_RESET_B3,CAPI_RESP)
  112 
  113 #define CAPI_LISTEN_REQ              CAPICMD(CAPI_LISTEN,CAPI_REQ)
  114 #define CAPI_LISTEN_CONF             CAPICMD(CAPI_LISTEN,CAPI_CONF)
  115 
  116 #define CAPI_MANUFACTURER_REQ        CAPICMD(CAPI_MANUFACTURER,CAPI_REQ)
  117 #define CAPI_MANUFACTURER_CONF       CAPICMD(CAPI_MANUFACTURER,CAPI_CONF)
  118 #define CAPI_MANUFACTURER_IND        CAPICMD(CAPI_MANUFACTURER,CAPI_IND)
  119 #define CAPI_MANUFACTURER_RESP       CAPICMD(CAPI_MANUFACTURER,CAPI_RESP)
  120 
  121 #define CAPI_FACILITY_REQ            CAPICMD(CAPI_FACILITY,CAPI_REQ)
  122 #define CAPI_FACILITY_CONF           CAPICMD(CAPI_FACILITY,CAPI_CONF)
  123 #define CAPI_FACILITY_IND            CAPICMD(CAPI_FACILITY,CAPI_IND)
  124 #define CAPI_FACILITY_RESP           CAPICMD(CAPI_FACILITY,CAPI_RESP)
  125 
  126 #define CAPI_INFO_REQ                CAPICMD(CAPI_INFO,CAPI_REQ)
  127 #define CAPI_INFO_CONF               CAPICMD(CAPI_INFO,CAPI_CONF)
  128 #define CAPI_INFO_IND                CAPICMD(CAPI_INFO,CAPI_IND)
  129 #define CAPI_INFO_RESP               CAPICMD(CAPI_INFO,CAPI_RESP)
  130 
  131 /* CAPI message access helpers */
  132 
  133 /*
  134  * CAPI message header:
  135  * word   Length
  136  * word   ApplId
  137  * byte   Command
  138  * byte   Subcommand
  139  * word   MsgId
  140  *
  141  * Note that in the following, Controller/PLCI/NCCI is coded as follows:
  142  * bits 0..6 = controller, bit 7 = ext/int, bits 8..15 = PLCI, and
  143  * bits 16..31 = NCCI value.
  144  *
  145  * ALERT_REQ, 01 80:
  146  * dword  PLCI
  147  * struct Additional Info
  148  *
  149  * ALERT_CONF, 01 81:
  150  * dword  PLCI
  151  * word   Info (0 = OK, other = cause)
  152  *
  153  * CONNECT_REQ, 02 80:
  154  * dword  controller
  155  * word   CIP
  156  * struct Called party number
  157  * struct Calling party number
  158  * struct Called party subaddress
  159  * struct Calling party subaddress
  160  * struct Bearer Capability
  161  * struct Low Layer Compatibility
  162  * struct High Layer Compatibility
  163  * struct Additional Info
  164  *
  165  * CONNECT_CONF, 02 81:
  166  * dword  PLCI
  167  * word   Info (0 = OK, other = cause)
  168  *
  169  * CONNECT_IND, 02 82:
  170  * dword  PLCI
  171  * word   CIP
  172  * struct Called party number
  173  * struct Calling party number
  174  * struct Called party subaddress
  175  * struct Calling party subaddress
  176  * struct Bearer Capability
  177  * struct Low Layer Compatibility
  178  * struct High Layer Compatibility
  179  * struct Additional Info
  180  * struct Second Calling party number
  181  *
  182  * CONNECT_RESP, 02 83:
  183  * dword  PLCI
  184  * word   Reject (0 = accept, 1 = ignore, 2 = reject/normal clearing)
  185  * struct B protocol
  186  * struct Connected number
  187  * struct Connected subaddress
  188  * struct Low Layer Compatibility
  189  * struct Additional Info
  190  *
  191  * CONNECT_ACTIVE_IND, 03 82:
  192  * dword  PLCI
  193  * struct Connected number
  194  * struct Connected subaddress
  195  * struct Low Layer Compatibility
  196  *
  197  * CONNECT_ACTIVE_RESP, 03 83:
  198  * dword  PLCI
  199  *
  200  * CONNECT_B3_REQ, 82 80:
  201  * dword  PLCI
  202  * struct NCPI
  203  *
  204  * CONNECT_B3_CONF, 82 81:
  205  * dword  NCCI
  206  * word   Info (0 = connected, other = cause)
  207  *
  208  * CONNECT_B3_IND, 82 82:
  209  * dword  NCCI
  210  * struct NCPI
  211  *
  212  * CONNECT_B3_RESP, 82 83:
  213  * dword  NCCI
  214  * word   Reject (0 = accept, 2 = reject/normal clearing)
  215  * struct NCPI
  216  *
  217  * CONNECT_B3_ACTIVE_IND, 83 82:
  218  * dword  NCCI
  219  * struct NCPI
  220  *
  221  * CONNECT_B3_ACTIVE_RESP, 83  83:
  222  * dword  NCCI
  223  *
  224  * DATA_B3_REQ, 86 80:
  225  * dword  NCCI
  226  * dword  Data pointer
  227  * word   Data length
  228  * word   Data handle (packet id)
  229  * word   Flags (02 = more)
  230  *
  231  * DATA_B3_CONF, 86 81:
  232  * dword  NCCI
  233  * word   Data handle (packet id)
  234  * word   Info (0 = OK, other = cause)
  235  *
  236  * DATA_B3_IND, 86 82:
  237  * dword  NCCI
  238  * dword  Data pointer
  239  * word   Data length
  240  * word   Data handle (packet id)
  241  * word   Flags (02 = more)
  242  *
  243  * DATA_B3_RESP, 86 83:
  244  * dword  NCCI
  245  * word   Data handle (packet id)
  246  *
  247  * DISCONNECT_B3_REQ, 84 80:
  248  * dword  NCCI
  249  * struct NCPI
  250  *
  251  * DISCONNECT_B3_CONF, 84 81:
  252  * dword  NCCI
  253  * word   Info (0 = OK, other = cause)
  254  *
  255  * DISCONNECT_B3_IND, 84 82:
  256  * dword  NCCI
  257  * word   Reason
  258  * struct NCPI
  259  *
  260  * DISCONNECT_B3_RESP, 84 83:
  261  * dword  NCCI
  262  *
  263  * DISCONNECT_REQ, 04 80:
  264  * dword  PLCI
  265  * struct Additional Info
  266  *
  267  * DISCONNECT_CONF, 04 81:
  268  * dword  PLCI
  269  * word   Info (0 = OK, other = cause)
  270  *
  271  * DISCONNECT_IND, 04 82:
  272  * dword  PLCI
  273  * word   Reason
  274  *
  275  * DISCONNECT_RESP, 04 83:
  276  * dword  PLCI
  277  *
  278  * LISTEN_REQ, 05 80:
  279  * dword  Controller
  280  * dword  Info mask (bits 0..9 used)
  281  * dword  CIP Mask (bit 0 = any match)
  282  * dword  CIP Mask 2 (bit 0 = any match)
  283  * struct Calling party number
  284  * struct Calling party subaddress
  285  *
  286  * LISTEN_CONF, 05 81:
  287  * dword  Controller
  288  * word   Info (0 = OK, other = cause)
  289  *
  290  * INFO_REQ, 08 80:
  291  * dword  Controller/PLCI
  292  * struct Called party number
  293  * struct Additional Info
  294  *
  295  * INFO_CONF, 08 81:
  296  * dword  Controller/PLCI
  297  * word   Info (0 = OK, other = cause)
  298  *
  299  * INFO_IND, 08 82:
  300  * dword  Controller/PLCI
  301  * word   Info number
  302  * struct Info element
  303  *
  304  * INFO_RESP, 08 83:
  305  * dword  Controller/PLCI
  306  */
  307 
  308 #define CAPIMSG_LEN(msg)             (msg[0]|(msg[1]<<8))
  309 #define CAPIMSG_DATALEN(msg)         (msg[16]|(msg[17]<<8))
  310 
  311 static __inline u_int8_t* capimsg_getu8(u_int8_t *msg, u_int8_t *val)
  312 {
  313     *val = *msg;
  314     return (msg + 1);
  315 }
  316 
  317 static __inline u_int8_t* capimsg_getu16(u_int8_t *msg, u_int16_t *val)
  318 {
  319     *val = (msg[0]|(msg[1]<<8));
  320     return (msg + 2);
  321 }
  322 
  323 static __inline u_int8_t* capimsg_getu32(u_int8_t *msg, u_int32_t *val)
  324 {
  325     *val = (msg[0]|(msg[1]<<8)|(msg[2]<<16)|(msg[3]<<24));
  326     return (msg + 4);
  327 }
  328 
  329 static __inline u_int8_t* capimsg_setu8(u_int8_t *msg, u_int8_t val)
  330 {
  331     msg[0] = val;
  332     return (msg + 1);
  333 }
  334 
  335 static __inline u_int8_t* capimsg_setu16(u_int8_t *msg, u_int16_t val)
  336 {
  337     msg[0] = (val & 0xff);
  338     msg[1] = (val >> 8) & 0xff;
  339     return (msg + 2);
  340 }
  341 
  342 static __inline u_int8_t* capimsg_setu32(u_int8_t *msg, u_int32_t val)
  343 {
  344     msg[0] = (val & 0xff);
  345     msg[1] = (val >> 8) & 0xff;
  346     msg[2] = (val >> 16) & 0xff;
  347     msg[3] = (val >> 24) & 0xff;
  348     return (msg + 4);
  349 }
  350 
  351 /*
  352 //  CAPI message handlers called by higher layers
  353 */
  354 
  355 extern void capi_listen_req(capi_softc_t *sc, u_int32_t CIP);
  356 extern void capi_alert_req(capi_softc_t *sc, call_desc_t *cd);
  357 extern void capi_connect_req(capi_softc_t *sc, call_desc_t *cd);
  358 extern void capi_connect_b3_req(capi_softc_t *sc, call_desc_t *cd);
  359 extern void capi_connect_resp(capi_softc_t *sc, call_desc_t *cd);
  360 extern void capi_data_b3_req(capi_softc_t *sc, int chan, struct mbuf *m);
  361 extern void capi_disconnect_req(capi_softc_t *sc, call_desc_t *cd);
  362 
  363 /*
  364 //  CAPI message handlers called by the receive routine
  365 */
  366 
  367 extern void capi_listen_conf(capi_softc_t *sc, struct mbuf *m);
  368 extern void capi_info_ind(capi_softc_t *sc, struct mbuf *m);
  369 extern void capi_alert_conf(capi_softc_t *sc, struct mbuf *m);
  370 extern void capi_connect_conf(capi_softc_t *sc, struct mbuf *m);
  371 extern void capi_connect_active_ind(capi_softc_t *sc, struct mbuf *m);
  372 extern void capi_connect_b3_conf(capi_softc_t *sc, struct mbuf *m);
  373 extern void capi_connect_b3_active_ind(capi_softc_t *sc, struct mbuf *m);
  374 extern void capi_connect_ind(capi_softc_t *sc, struct mbuf *m);
  375 extern void capi_connect_b3_ind(capi_softc_t *sc, struct mbuf *m);
  376 extern void capi_data_b3_conf(capi_softc_t *sc, struct mbuf *m);
  377 extern void capi_data_b3_ind(capi_softc_t *sc, struct mbuf *m);
  378 extern void capi_disconnect_conf(capi_softc_t *sc, struct mbuf *m);
  379 extern void capi_disconnect_b3_ind(capi_softc_t *sc, struct mbuf *m);
  380 extern void capi_disconnect_ind(capi_softc_t *sc, struct mbuf *m);
  381 
  382 #endif /* _I4B_CAPI_MSGS_H_ */

Cache object: 4f785f68cbea44bb705a97563810e1bd


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