hc
2023-10-25 6c2073b7aa40e29d0eca7d571dd7bc590c7ecaa7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/* $Id: isdnloop.h,v 1.5.6.3 2001/09/23 22:24:56 kai Exp $
 *
 * Loopback lowlevel module for testing of linklevel.
 *
 * Copyright 1997 by Fritz Elfert (fritz@isdn4linux.de)
 *
 * This software may be used and distributed according to the terms
 * of the GNU General Public License, incorporated herein by reference.
 *
 */
 
#ifndef isdnloop_h
#define isdnloop_h
 
#define ISDNLOOP_IOCTL_DEBUGVAR  0
#define ISDNLOOP_IOCTL_ADDCARD   1
#define ISDNLOOP_IOCTL_LEASEDCFG 2
#define ISDNLOOP_IOCTL_STARTUP   3
 
/* Struct for adding new cards */
typedef struct isdnloop_cdef {
   char id1[10];
} isdnloop_cdef;
 
/* Struct for configuring cards */
typedef struct isdnloop_sdef {
   int ptype;
   char num[3][20];
} isdnloop_sdef;
 
#if defined(__KERNEL__) || defined(__DEBUGVAR__)
 
#ifdef __KERNEL__
/* Kernel includes */
 
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/major.h>
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <linux/wait.h>
#include <linux/isdnif.h>
 
#endif                          /* __KERNEL__ */
 
#define ISDNLOOP_FLAGS_B1ACTIVE 1    /* B-Channel-1 is open           */
#define ISDNLOOP_FLAGS_B2ACTIVE 2    /* B-Channel-2 is open           */
#define ISDNLOOP_FLAGS_RUNNING  4    /* Cards driver activated        */
#define ISDNLOOP_FLAGS_RBTIMER  8    /* scheduling of B-Channel-poll  */
#define ISDNLOOP_TIMER_BCREAD 1 /* B-Channel poll-cycle          */
#define ISDNLOOP_TIMER_DCREAD (HZ/2)    /* D-Channel poll-cycle          */
#define ISDNLOOP_TIMER_ALERTWAIT (10 * HZ)    /* Alert timeout                 */
#define ISDNLOOP_MAX_SQUEUE 65536    /* Max. outstanding send-data    */
#define ISDNLOOP_BCH 2          /* channels per card             */
 
/*
 * Per card driver data
 */
typedef struct isdnloop_card {
   struct isdnloop_card *next;    /* Pointer to next device struct    */
   struct isdnloop_card
   *rcard[ISDNLOOP_BCH];   /* Pointer to 'remote' card         */
   int rch[ISDNLOOP_BCH];  /* 'remote' channel                 */
   int myid;               /* Driver-Nr. assigned by linklevel */
   int leased;             /* Flag: This Adapter is connected  */
   /*       to a leased line           */
   int sil[ISDNLOOP_BCH];  /* SI's to listen for               */
   char eazlist[ISDNLOOP_BCH][11];
   /* EAZ's to listen for              */
   char s0num[3][20];      /* 1TR6 base-number or MSN's        */
   unsigned short flags;   /* Statusflags                      */
   int ptype;              /* Protocol type (1TR6 or Euro)     */
   struct timer_list st_timer;    /* Timer for Status-Polls           */
   struct timer_list rb_timer;    /* Timer for B-Channel-Polls        */
   struct timer_list
   c_timer[ISDNLOOP_BCH]; /* Timer for Alerting               */
   int l2_proto[ISDNLOOP_BCH];    /* Current layer-2-protocol         */
   isdn_if interface;      /* Interface to upper layer         */
   int iptr;               /* Index to imsg-buffer             */
   char imsg[60];          /* Internal buf for status-parsing  */
   int optr;               /* Index to omsg-buffer             */
   char omsg[60];          /* Internal buf for cmd-parsing     */
   char msg_buf[2048];     /* Buffer for status-messages       */
   char *msg_buf_write;    /* Writepointer for statusbuffer    */
   char *msg_buf_read;     /* Readpointer for statusbuffer     */
   char *msg_buf_end;      /* Pointer to end of statusbuffer   */
   int sndcount[ISDNLOOP_BCH];    /* Byte-counters for B-Ch.-send     */
   struct sk_buff_head
   bqueue[ISDNLOOP_BCH];  /* B-Channel queues                 */
   struct sk_buff_head dqueue;    /* D-Channel queue                  */
   spinlock_t isdnloop_lock;
} isdnloop_card;
 
/*
 * Main driver data
 */
#ifdef __KERNEL__
static isdnloop_card *cards = (isdnloop_card *) 0;
#endif                          /* __KERNEL__ */
 
/* Utility-Macros */
 
#define CID (card->interface.id)
 
#endif                          /* defined(__KERNEL__) || defined(__DEBUGVAR__) */
#endif                          /* isdnloop_h */