130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* $Id: isdn.h,v 1.125.2.3 2004/02/10 01:07:14 keil Exp $
230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Main header for the Linux ISDN subsystem (linklevel).
430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright 1994,95,96 by Fritz Elfert (fritz@isdn4linux.de)
630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright 1995,96    by Thinking Objects Software GmbH Wuerzburg
730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright 1995,96    by Michael Hipp (Michael.Hipp@student.uni-tuebingen.de)
830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This software may be used and distributed according to the terms
1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * of the GNU General Public License, incorporated herein by reference.
1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng *
1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */
1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI__ISDN_H__
1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI__ISDN_H__
1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/ioctl.h>
1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/tty.h>
1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_MAX_DRIVERS    32
2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_MAX_CHANNELS   64
2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* New ioctl-codes */
2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETAIF  _IO('I',1)
2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETDIF  _IO('I',2)
2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETSCF  _IO('I',3)
2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETGCF  _IO('I',4)
2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETANM  _IO('I',5)
2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETDNM  _IO('I',6)
3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETGNM  _IO('I',7)
3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCGETSET  _IO('I',8) /* no longer supported */
3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETSET  _IO('I',9) /* no longer supported */
3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETVER  _IO('I',10)
3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETHUP  _IO('I',11)
3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETGST  _IO('I',12)
3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETBRJ  _IO('I',13)
3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSIGPRF  _IO('I',14)
3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCGETPRF  _IO('I',15)
3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETPRF  _IO('I',16)
4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCGETMAP  _IO('I',17)
4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCSETMAP  _IO('I',18)
4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETASL  _IO('I',19)
4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETDIL  _IO('I',20)
4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCGETCPS  _IO('I',21)
4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCGETDVR  _IO('I',22)
4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETLCR  _IO('I',23) /* dwabc ioctl for LCR from isdnlog */
4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETDWRSET  _IO('I',24) /* dwabc ioctl to reset abc-values to default on a net-interface */
4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETALN  _IO('I',32)
5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETDLN  _IO('I',33)
5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCNETGPN  _IO('I',34)
5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCDBGVAR  _IO('I',127)
5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define IIOCDRVCTL  _IO('I',128)
5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* cisco hdlck device private ioctls */
5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SIOCGKEEPPERIOD	(SIOCDEVPRIVATE + 0)
6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SIOCSKEEPPERIOD	(SIOCDEVPRIVATE + 1)
6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SIOCGDEBSERINT	(SIOCDEVPRIVATE + 2)
6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SIOCSDEBSERINT	(SIOCDEVPRIVATE + 3)
6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Packet encapsulations for net-interfaces */
6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_ETHER      0
6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_RAWIP      1
6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_IPTYP      2
6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_CISCOHDLC  3 /* Without SLARP and keepalive */
6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_SYNCPPP    4
7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_UIHDLC     5
7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_CISCOHDLCK 6 /* With SLARP and keepalive    */
7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_X25IFACE   7 /* Documentation/networking/x25-iface.txt */
7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_ENCAP_MAX_ENCAP  ISDN_NET_ENCAP_X25IFACE
7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Facility which currently uses an ISDN-channel */
7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_NONE       0
7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_RAW        1
7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_MODEM      2
7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_NET        3
8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_VOICE      4
8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_FAX        5
8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_MASK       7 /* Mask to get plain usage */
8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_DISABLED  32 /* This bit is set, if channel is disabled */
8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_EXCLUSIVE 64 /* This bit is set, if channel is exclusive */
8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_USAGE_OUTGOING 128 /* This bit is set, if channel is outgoing  */
8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_MODEM_NUMREG    24        /* Number of Modem-Registers        */
8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_LMSNLEN         255 /* Length of tty's Listen-MSN string */
8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_CMSGLEN	     50	 /* Length of CONNECT-Message to add for Modem */
9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_MSNLEN          32
9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define NET_DV 0x06  /* Data version for isdn_net_ioctl_cfg   */
9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define TTY_DV 0x06  /* Data version for iprofd etc.          */
9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define INF_DV 0x01  /* Data version for /dev/isdninfo        */
9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
9730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct {
9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char drvid[25];
9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  unsigned long arg;
10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} isdn_ioctl_struct;
10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct {
10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char name[10];
10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char phone[ISDN_MSNLEN];
10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  outgoing;
10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} isdn_net_ioctl_phone;
10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
10830692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct {
10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char name[10];     /* Name of interface                     */
11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char master[10];   /* Name of Master for Bundling           */
11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char slave[10];    /* Name of Slave for Bundling            */
11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char eaz[256];     /* EAZ/MSN                               */
11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  char drvid[25];    /* DriverId for Bindings                 */
11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  onhtime;      /* Hangup-Timeout                        */
11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  charge;       /* Charge-Units                          */
11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  l2_proto;     /* Layer-2 protocol                      */
11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  l3_proto;     /* Layer-3 protocol                      */
11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  p_encap;      /* Encapsulation                         */
11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  exclusive;    /* Channel, if bound exclusive           */
12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  dialmax;      /* Dial Retry-Counter                    */
12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  slavedelay;   /* Delay until slave starts up           */
12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  cbdelay;      /* Delay before Callback                 */
12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  chargehup;    /* Flag: Charge-Hangup                   */
12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  ihup;         /* Flag: Hangup-Timeout on incoming line */
12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  secure;       /* Flag: Secure                          */
12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  callback;     /* Flag: Callback                        */
12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  cbhup;        /* Flag: Reject Call before Callback     */
12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  pppbind;      /* ippp device for bindings              */
12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  chargeint;    /* Use fixed charge interval length      */
13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  triggercps;   /* BogoCPS needed for triggering slave   */
13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  dialtimeout;  /* Dial-Timeout                          */
13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  dialwait;     /* Time to wait after failed dial        */
13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng  int  dialmode;     /* Flag: off / on / auto                 */
13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} isdn_net_ioctl_cfg;
13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_DIALMODE_MASK  0xC0    /* bits for status                */
13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_DM_OFF	        0x00    /* this interface is stopped      */
13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_DM_MANUAL	0x40    /* this interface is on (manual)  */
13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_DM_AUTO	0x80    /* this interface is autodial     */
14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define ISDN_NET_DIALMODE(x) ((&(x))->flags & ISDN_NET_DIALMODE_MASK)
14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng
14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI__ISDN_H__ */
144