isdnif.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. /* $Id: isdnif.h,v 1.43.2.2 2004/01/12 23:08:35 keil Exp $
  2. *
  3. * Linux ISDN subsystem
  4. * Definition of the interface between the subsystem and its low-level drivers.
  5. *
  6. * Copyright 1994,95,96 by Fritz Elfert (fritz@isdn4linux.de)
  7. * Copyright 1995,96 Thinking Objects Software GmbH Wuerzburg
  8. *
  9. * This software may be used and distributed according to the terms
  10. * of the GNU General Public License, incorporated herein by reference.
  11. *
  12. */
  13. #ifndef __ISDNIF_H__
  14. #define __ISDNIF_H__
  15. #include <linux/skbuff.h>
  16. #include <uapi/linux/isdnif.h>
  17. /***************************************************************************/
  18. /* Extensions made by Werner Cornelius (werner@ikt.de) */
  19. /* */
  20. /* The proceed command holds a incoming call in a state to leave processes */
  21. /* enough time to check whether ist should be accepted. */
  22. /* The PROT_IO Command extends the interface to make protocol dependent */
  23. /* features available (call diversion, call waiting...). */
  24. /* */
  25. /* The PROT_IO Command is executed with the desired driver id and the arg */
  26. /* parameter coded as follows: */
  27. /* The lower 8 bits of arg contain the desired protocol from ISDN_PTYPE */
  28. /* definitions. The upper 24 bits represent the protocol specific cmd/stat.*/
  29. /* Any additional data is protocol and command specific. */
  30. /* This mechanism also applies to the statcallb callback STAT_PROT. */
  31. /* */
  32. /* This suggested extension permits an easy expansion of protocol specific */
  33. /* handling. Extensions may be added at any time without changing the HL */
  34. /* driver code and not getting conflicts without certifications. */
  35. /* The well known CAPI 2.0 interface handles such extensions in a similar */
  36. /* way. Perhaps a protocol specific module may be added and separately */
  37. /* loaded and linked to the basic isdn module for handling. */
  38. /***************************************************************************/
  39. /*****************/
  40. /* DSS1 commands */
  41. /*****************/
  42. #define DSS1_CMD_INVOKE ((0x00 << 8) | ISDN_PTYPE_EURO) /* invoke a supplementary service */
  43. #define DSS1_CMD_INVOKE_ABORT ((0x01 << 8) | ISDN_PTYPE_EURO) /* abort a invoke cmd */
  44. /*******************************/
  45. /* DSS1 Status callback values */
  46. /*******************************/
  47. #define DSS1_STAT_INVOKE_RES ((0x80 << 8) | ISDN_PTYPE_EURO) /* Result for invocation */
  48. #define DSS1_STAT_INVOKE_ERR ((0x81 << 8) | ISDN_PTYPE_EURO) /* Error Return for invocation */
  49. #define DSS1_STAT_INVOKE_BRD ((0x82 << 8) | ISDN_PTYPE_EURO) /* Deliver invoke broadcast info */
  50. /*********************************************************************/
  51. /* structures for DSS1 commands and callback */
  52. /* */
  53. /* An action is invoked by sending a DSS1_CMD_INVOKE. The ll_id, proc*/
  54. /* timeout, datalen and data fields must be set before calling. */
  55. /* */
  56. /* The return value is a positive hl_id value also delivered in the */
  57. /* hl_id field. A value of zero signals no more left hl_id capacitys.*/
  58. /* A negative return value signals errors in LL. So if the return */
  59. /* value is <= 0 no action in LL will be taken -> request ignored */
  60. /* */
  61. /* The timeout field must be filled with a positive value specifying */
  62. /* the amount of time the INVOKED process waits for a reaction from */
  63. /* the network. */
  64. /* If a response (either error or result) is received during this */
  65. /* intervall, a reporting callback is initiated and the process will */
  66. /* be deleted, the hl identifier will be freed. */
  67. /* If no response is received during the specified intervall, a error*/
  68. /* callback is initiated with timeout set to -1 and a datalen set */
  69. /* to 0. */
  70. /* If timeout is set to a value <= 0 during INVOCATION the process is*/
  71. /* immediately deleted after sending the data. No callback occurs ! */
  72. /* */
  73. /* A currently waiting process may be aborted with INVOKE_ABORT. No */
  74. /* callback will occur when a process has been aborted. */
  75. /* */
  76. /* Broadcast invoke frames from the network are reported via the */
  77. /* STAT_INVOKE_BRD callback. The ll_id is set to 0, the other fields */
  78. /* are supplied by the network and not by the HL. */
  79. /*********************************************************************/
  80. /*****************/
  81. /* NI1 commands */
  82. /*****************/
  83. #define NI1_CMD_INVOKE ((0x00 << 8) | ISDN_PTYPE_NI1) /* invoke a supplementary service */
  84. #define NI1_CMD_INVOKE_ABORT ((0x01 << 8) | ISDN_PTYPE_NI1) /* abort a invoke cmd */
  85. /*******************************/
  86. /* NI1 Status callback values */
  87. /*******************************/
  88. #define NI1_STAT_INVOKE_RES ((0x80 << 8) | ISDN_PTYPE_NI1) /* Result for invocation */
  89. #define NI1_STAT_INVOKE_ERR ((0x81 << 8) | ISDN_PTYPE_NI1) /* Error Return for invocation */
  90. #define NI1_STAT_INVOKE_BRD ((0x82 << 8) | ISDN_PTYPE_NI1) /* Deliver invoke broadcast info */
  91. typedef struct
  92. { ulong ll_id; /* ID supplied by LL when executing */
  93. /* a command and returned by HL for */
  94. /* INVOKE_RES and INVOKE_ERR */
  95. int hl_id; /* ID supplied by HL when called */
  96. /* for executing a cmd and delivered */
  97. /* for results and errors */
  98. /* must be supplied by LL when aborting*/
  99. int proc; /* invoke procedure used by CMD_INVOKE */
  100. /* returned by callback and broadcast */
  101. int timeout; /* timeout for INVOKE CMD in ms */
  102. /* -1 in stat callback when timed out */
  103. /* error value when error callback */
  104. int datalen; /* length of cmd or stat data */
  105. u_char *data;/* pointer to data delivered or send */
  106. } isdn_cmd_stat;
  107. /*
  108. * Commands from linklevel to lowlevel
  109. *
  110. */
  111. #define ISDN_CMD_IOCTL 0 /* Perform ioctl */
  112. #define ISDN_CMD_DIAL 1 /* Dial out */
  113. #define ISDN_CMD_ACCEPTD 2 /* Accept an incoming call on D-Chan. */
  114. #define ISDN_CMD_ACCEPTB 3 /* Request B-Channel connect. */
  115. #define ISDN_CMD_HANGUP 4 /* Hangup */
  116. #define ISDN_CMD_CLREAZ 5 /* Clear EAZ(s) of channel */
  117. #define ISDN_CMD_SETEAZ 6 /* Set EAZ(s) of channel */
  118. #define ISDN_CMD_GETEAZ 7 /* Get EAZ(s) of channel */
  119. #define ISDN_CMD_SETSIL 8 /* Set Service-Indicator-List of channel */
  120. #define ISDN_CMD_GETSIL 9 /* Get Service-Indicator-List of channel */
  121. #define ISDN_CMD_SETL2 10 /* Set B-Chan. Layer2-Parameter */
  122. #define ISDN_CMD_GETL2 11 /* Get B-Chan. Layer2-Parameter */
  123. #define ISDN_CMD_SETL3 12 /* Set B-Chan. Layer3-Parameter */
  124. #define ISDN_CMD_GETL3 13 /* Get B-Chan. Layer3-Parameter */
  125. // #define ISDN_CMD_LOCK 14 /* Signal usage by upper levels */
  126. // #define ISDN_CMD_UNLOCK 15 /* Release usage-lock */
  127. #define ISDN_CMD_SUSPEND 16 /* Suspend connection */
  128. #define ISDN_CMD_RESUME 17 /* Resume connection */
  129. #define ISDN_CMD_PROCEED 18 /* Proceed with call establishment */
  130. #define ISDN_CMD_ALERT 19 /* Alert after Proceeding */
  131. #define ISDN_CMD_REDIR 20 /* Redir a incoming call */
  132. #define ISDN_CMD_PROT_IO 21 /* Protocol specific commands */
  133. #define CAPI_PUT_MESSAGE 22 /* CAPI message send down or up */
  134. #define ISDN_CMD_FAXCMD 23 /* FAX commands to HL-driver */
  135. #define ISDN_CMD_AUDIO 24 /* DSP, DTMF, ... settings */
  136. /*
  137. * Status-Values delivered from lowlevel to linklevel via
  138. * statcallb().
  139. *
  140. */
  141. #define ISDN_STAT_STAVAIL 256 /* Raw status-data available */
  142. #define ISDN_STAT_ICALL 257 /* Incoming call detected */
  143. #define ISDN_STAT_RUN 258 /* Signal protocol-code is running */
  144. #define ISDN_STAT_STOP 259 /* Signal halt of protocol-code */
  145. #define ISDN_STAT_DCONN 260 /* Signal D-Channel connect */
  146. #define ISDN_STAT_BCONN 261 /* Signal B-Channel connect */
  147. #define ISDN_STAT_DHUP 262 /* Signal D-Channel disconnect */
  148. #define ISDN_STAT_BHUP 263 /* Signal B-Channel disconnect */
  149. #define ISDN_STAT_CINF 264 /* Charge-Info */
  150. #define ISDN_STAT_LOAD 265 /* Signal new lowlevel-driver is loaded */
  151. #define ISDN_STAT_UNLOAD 266 /* Signal unload of lowlevel-driver */
  152. #define ISDN_STAT_BSENT 267 /* Signal packet sent */
  153. #define ISDN_STAT_NODCH 268 /* Signal no D-Channel */
  154. #define ISDN_STAT_ADDCH 269 /* Add more Channels */
  155. #define ISDN_STAT_CAUSE 270 /* Cause-Message */
  156. #define ISDN_STAT_ICALLW 271 /* Incoming call without B-chan waiting */
  157. #define ISDN_STAT_REDIR 272 /* Redir result */
  158. #define ISDN_STAT_PROT 273 /* protocol IO specific callback */
  159. #define ISDN_STAT_DISPLAY 274 /* deliver a received display message */
  160. #define ISDN_STAT_L1ERR 275 /* Signal Layer-1 Error */
  161. #define ISDN_STAT_FAXIND 276 /* FAX indications from HL-driver */
  162. #define ISDN_STAT_AUDIO 277 /* DTMF, DSP indications */
  163. #define ISDN_STAT_DISCH 278 /* Disable/Enable channel usage */
  164. /*
  165. * Audio commands
  166. */
  167. #define ISDN_AUDIO_SETDD 0 /* Set DTMF detection */
  168. #define ISDN_AUDIO_DTMF 1 /* Rx/Tx DTMF */
  169. /*
  170. * Values for errcode field
  171. */
  172. #define ISDN_STAT_L1ERR_SEND 1
  173. #define ISDN_STAT_L1ERR_RECV 2
  174. /*
  175. * Values for feature-field of interface-struct.
  176. */
  177. /* Layer 2 */
  178. #define ISDN_FEATURE_L2_X75I (0x0001 << ISDN_PROTO_L2_X75I)
  179. #define ISDN_FEATURE_L2_X75UI (0x0001 << ISDN_PROTO_L2_X75UI)
  180. #define ISDN_FEATURE_L2_X75BUI (0x0001 << ISDN_PROTO_L2_X75BUI)
  181. #define ISDN_FEATURE_L2_HDLC (0x0001 << ISDN_PROTO_L2_HDLC)
  182. #define ISDN_FEATURE_L2_TRANS (0x0001 << ISDN_PROTO_L2_TRANS)
  183. #define ISDN_FEATURE_L2_X25DTE (0x0001 << ISDN_PROTO_L2_X25DTE)
  184. #define ISDN_FEATURE_L2_X25DCE (0x0001 << ISDN_PROTO_L2_X25DCE)
  185. #define ISDN_FEATURE_L2_V11096 (0x0001 << ISDN_PROTO_L2_V11096)
  186. #define ISDN_FEATURE_L2_V11019 (0x0001 << ISDN_PROTO_L2_V11019)
  187. #define ISDN_FEATURE_L2_V11038 (0x0001 << ISDN_PROTO_L2_V11038)
  188. #define ISDN_FEATURE_L2_MODEM (0x0001 << ISDN_PROTO_L2_MODEM)
  189. #define ISDN_FEATURE_L2_FAX (0x0001 << ISDN_PROTO_L2_FAX)
  190. #define ISDN_FEATURE_L2_HDLC_56K (0x0001 << ISDN_PROTO_L2_HDLC_56K)
  191. #define ISDN_FEATURE_L2_MASK (0x0FFFF) /* Max. 16 protocols */
  192. #define ISDN_FEATURE_L2_SHIFT (0)
  193. /* Layer 3 */
  194. #define ISDN_FEATURE_L3_TRANS (0x10000 << ISDN_PROTO_L3_TRANS)
  195. #define ISDN_FEATURE_L3_TRANSDSP (0x10000 << ISDN_PROTO_L3_TRANSDSP)
  196. #define ISDN_FEATURE_L3_FCLASS2 (0x10000 << ISDN_PROTO_L3_FCLASS2)
  197. #define ISDN_FEATURE_L3_FCLASS1 (0x10000 << ISDN_PROTO_L3_FCLASS1)
  198. #define ISDN_FEATURE_L3_MASK (0x0FF0000) /* Max. 8 Protocols */
  199. #define ISDN_FEATURE_L3_SHIFT (16)
  200. /* Signaling */
  201. #define ISDN_FEATURE_P_UNKNOWN (0x1000000 << ISDN_PTYPE_UNKNOWN)
  202. #define ISDN_FEATURE_P_1TR6 (0x1000000 << ISDN_PTYPE_1TR6)
  203. #define ISDN_FEATURE_P_EURO (0x1000000 << ISDN_PTYPE_EURO)
  204. #define ISDN_FEATURE_P_NI1 (0x1000000 << ISDN_PTYPE_NI1)
  205. #define ISDN_FEATURE_P_MASK (0x0FF000000) /* Max. 8 Protocols */
  206. #define ISDN_FEATURE_P_SHIFT (24)
  207. typedef struct setup_parm {
  208. unsigned char phone[32]; /* Remote Phone-Number */
  209. unsigned char eazmsn[32]; /* Local EAZ or MSN */
  210. unsigned char si1; /* Service Indicator 1 */
  211. unsigned char si2; /* Service Indicator 2 */
  212. unsigned char plan; /* Numbering plan */
  213. unsigned char screen; /* Screening info */
  214. } setup_parm;
  215. #ifdef CONFIG_ISDN_TTY_FAX
  216. /* T.30 Fax G3 */
  217. #define FAXIDLEN 21
  218. typedef struct T30_s {
  219. /* session parameters */
  220. __u8 resolution;
  221. __u8 rate;
  222. __u8 width;
  223. __u8 length;
  224. __u8 compression;
  225. __u8 ecm;
  226. __u8 binary;
  227. __u8 scantime;
  228. __u8 id[FAXIDLEN];
  229. /* additional parameters */
  230. __u8 phase;
  231. __u8 direction;
  232. __u8 code;
  233. __u8 badlin;
  234. __u8 badmul;
  235. __u8 bor;
  236. __u8 fet;
  237. __u8 pollid[FAXIDLEN];
  238. __u8 cq;
  239. __u8 cr;
  240. __u8 ctcrty;
  241. __u8 minsp;
  242. __u8 phcto;
  243. __u8 rel;
  244. __u8 nbc;
  245. /* remote station parameters */
  246. __u8 r_resolution;
  247. __u8 r_rate;
  248. __u8 r_width;
  249. __u8 r_length;
  250. __u8 r_compression;
  251. __u8 r_ecm;
  252. __u8 r_binary;
  253. __u8 r_scantime;
  254. __u8 r_id[FAXIDLEN];
  255. __u8 r_code;
  256. } __packed T30_s;
  257. #define ISDN_TTY_FAX_CONN_IN 0
  258. #define ISDN_TTY_FAX_CONN_OUT 1
  259. #define ISDN_TTY_FAX_FCON 0
  260. #define ISDN_TTY_FAX_DIS 1
  261. #define ISDN_TTY_FAX_FTT 2
  262. #define ISDN_TTY_FAX_MCF 3
  263. #define ISDN_TTY_FAX_DCS 4
  264. #define ISDN_TTY_FAX_TRAIN_OK 5
  265. #define ISDN_TTY_FAX_EOP 6
  266. #define ISDN_TTY_FAX_EOM 7
  267. #define ISDN_TTY_FAX_MPS 8
  268. #define ISDN_TTY_FAX_DTC 9
  269. #define ISDN_TTY_FAX_RID 10
  270. #define ISDN_TTY_FAX_HNG 11
  271. #define ISDN_TTY_FAX_DT 12
  272. #define ISDN_TTY_FAX_FCON_I 13
  273. #define ISDN_TTY_FAX_DR 14
  274. #define ISDN_TTY_FAX_ET 15
  275. #define ISDN_TTY_FAX_CFR 16
  276. #define ISDN_TTY_FAX_PTS 17
  277. #define ISDN_TTY_FAX_SENT 18
  278. #define ISDN_FAX_PHASE_IDLE 0
  279. #define ISDN_FAX_PHASE_A 1
  280. #define ISDN_FAX_PHASE_B 2
  281. #define ISDN_FAX_PHASE_C 3
  282. #define ISDN_FAX_PHASE_D 4
  283. #define ISDN_FAX_PHASE_E 5
  284. #endif /* TTY_FAX */
  285. #define ISDN_FAX_CLASS1_FAE 0
  286. #define ISDN_FAX_CLASS1_FTS 1
  287. #define ISDN_FAX_CLASS1_FRS 2
  288. #define ISDN_FAX_CLASS1_FTM 3
  289. #define ISDN_FAX_CLASS1_FRM 4
  290. #define ISDN_FAX_CLASS1_FTH 5
  291. #define ISDN_FAX_CLASS1_FRH 6
  292. #define ISDN_FAX_CLASS1_CTRL 7
  293. #define ISDN_FAX_CLASS1_OK 0
  294. #define ISDN_FAX_CLASS1_CONNECT 1
  295. #define ISDN_FAX_CLASS1_NOCARR 2
  296. #define ISDN_FAX_CLASS1_ERROR 3
  297. #define ISDN_FAX_CLASS1_FCERROR 4
  298. #define ISDN_FAX_CLASS1_QUERY 5
  299. typedef struct {
  300. __u8 cmd;
  301. __u8 subcmd;
  302. __u8 para[50];
  303. } aux_s;
  304. #define AT_COMMAND 0
  305. #define AT_EQ_VALUE 1
  306. #define AT_QUERY 2
  307. #define AT_EQ_QUERY 3
  308. /* CAPI structs */
  309. /* this is compatible to the old union size */
  310. #define MAX_CAPI_PARA_LEN 50
  311. typedef struct {
  312. /* Header */
  313. __u16 Length;
  314. __u16 ApplId;
  315. __u8 Command;
  316. __u8 Subcommand;
  317. __u16 Messagenumber;
  318. /* Parameter */
  319. union {
  320. __u32 Controller;
  321. __u32 PLCI;
  322. __u32 NCCI;
  323. } adr;
  324. __u8 para[MAX_CAPI_PARA_LEN];
  325. } capi_msg;
  326. /*
  327. * Structure for exchanging above infos
  328. *
  329. */
  330. typedef struct {
  331. int driver; /* Lowlevel-Driver-ID */
  332. int command; /* Command or Status (see above) */
  333. ulong arg; /* Additional Data */
  334. union {
  335. ulong errcode; /* Type of error with STAT_L1ERR */
  336. int length; /* Amount of bytes sent with STAT_BSENT */
  337. u_char num[50]; /* Additional Data */
  338. setup_parm setup;/* For SETUP msg */
  339. capi_msg cmsg; /* For CAPI like messages */
  340. char display[85];/* display message data */
  341. isdn_cmd_stat isdn_io; /* ISDN IO-parameter/result */
  342. aux_s aux; /* for modem commands/indications */
  343. #ifdef CONFIG_ISDN_TTY_FAX
  344. T30_s *fax; /* Pointer to ttys fax struct */
  345. #endif
  346. ulong userdata; /* User Data */
  347. } parm;
  348. } isdn_ctrl;
  349. #define dss1_io isdn_io
  350. #define ni1_io isdn_io
  351. /*
  352. * The interface-struct itself (initialized at load-time of lowlevel-driver)
  353. *
  354. * See Documentation/isdn/INTERFACE for a description, how the communication
  355. * between the ISDN subsystem and its drivers is done.
  356. *
  357. */
  358. typedef struct {
  359. struct module *owner;
  360. /* Number of channels supported by this driver
  361. */
  362. int channels;
  363. /*
  364. * Maximum Size of transmit/receive-buffer this driver supports.
  365. */
  366. int maxbufsize;
  367. /* Feature-Flags for this driver.
  368. * See defines ISDN_FEATURE_... for Values
  369. */
  370. unsigned long features;
  371. /*
  372. * Needed for calculating
  373. * dev->hard_header_len = linklayer header + hl_hdrlen;
  374. * Drivers, not supporting sk_buff's should set this to 0.
  375. */
  376. unsigned short hl_hdrlen;
  377. /*
  378. * Receive-Callback using sk_buff's
  379. * Parameters:
  380. * int Driver-ID
  381. * int local channel-number (0 ...)
  382. * struct sk_buff *skb received Data
  383. */
  384. void (*rcvcallb_skb)(int, int, struct sk_buff *);
  385. /* Status-Callback
  386. * Parameters:
  387. * isdn_ctrl*
  388. * driver = Driver ID.
  389. * command = One of above ISDN_STAT_... constants.
  390. * arg = depending on status-type.
  391. * num = depending on status-type.
  392. */
  393. int (*statcallb)(isdn_ctrl*);
  394. /* Send command
  395. * Parameters:
  396. * isdn_ctrl*
  397. * driver = Driver ID.
  398. * command = One of above ISDN_CMD_... constants.
  399. * arg = depending on command.
  400. * num = depending on command.
  401. */
  402. int (*command)(isdn_ctrl*);
  403. /*
  404. * Send data using sk_buff's
  405. * Parameters:
  406. * int driverId
  407. * int local channel-number (0...)
  408. * int Flag: Need ACK for this packet.
  409. * struct sk_buff *skb Data to send
  410. */
  411. int (*writebuf_skb) (int, int, int, struct sk_buff *);
  412. /* Send raw D-Channel-Commands
  413. * Parameters:
  414. * u_char pointer data
  415. * int length of data
  416. * int driverId
  417. * int local channel-number (0 ...)
  418. */
  419. int (*writecmd)(const u_char __user *, int, int, int);
  420. /* Read raw Status replies
  421. * u_char pointer data (volatile)
  422. * int length of buffer
  423. * int driverId
  424. * int local channel-number (0 ...)
  425. */
  426. int (*readstat)(u_char __user *, int, int, int);
  427. char id[20];
  428. } isdn_if;
  429. /*
  430. * Function which must be called by lowlevel-driver at loadtime with
  431. * the following fields of above struct set:
  432. *
  433. * channels Number of channels that will be supported.
  434. * hl_hdrlen Space to preserve in sk_buff's when sending. Drivers, not
  435. * supporting sk_buff's should set this to 0.
  436. * command Address of Command-Handler.
  437. * features Bitwise coded Features of this driver. (use ISDN_FEATURE_...)
  438. * writebuf_skb Address of Skbuff-Send-Handler.
  439. * writecmd " " D-Channel " which accepts raw D-Ch-Commands.
  440. * readstat " " D-Channel " which delivers raw Status-Data.
  441. *
  442. * The linklevel-driver fills the following fields:
  443. *
  444. * channels Driver-ID assigned to this driver. (Must be used on all
  445. * subsequent callbacks.
  446. * rcvcallb_skb Address of handler for received Skbuff's.
  447. * statcallb " " " for status-changes.
  448. *
  449. */
  450. extern int register_isdn(isdn_if*);
  451. #include <asm/uaccess.h>
  452. #endif /* __ISDNIF_H__ */