📄 isdn.h
字号:
u_char l3_proto; /* Layer-3-protocol */ /* See ISDN_PROTO_L3..-constants in */ /* isdnif.h */ /* 0 = Transparent */ int huptimer; /* Timeout-counter for auto-hangup */ int charge; /* Counter for charging units */ ulong chargetime; /* Timer for Charging info */ int hupflags; /* Flags for charge-unit-hangup: */ /* bit0: chargeint is invalid */ /* bit1: Getting charge-interval */ /* bit2: Do charge-unit-hangup */ /* bit3: Do hangup even on incoming */ int outgoing; /* Flag: outgoing call */ int onhtime; /* Time to keep link up */ int chargeint; /* Interval between charge-infos */ int onum; /* Flag: at least 1 outgoing number */ int cps; /* current speed of this interface */ int transcount; /* byte-counter for cps-calculation */ int sqfull; /* Flag: netdev-queue overloaded */ ulong sqfull_stamp; /* Start-Time of overload */ ulong slavedelay; /* Dynamic bundling delaytime */ int triggercps; /* BogoCPS needed for trigger slave */ isdn_net_phone *phone[2]; /* List of remote-phonenumbers */ /* phone[0] = Incoming Numbers */ /* phone[1] = Outgoing Numbers */ isdn_net_phone *dial; /* Pointer to dialed number */ struct net_device *master; /* Ptr to Master device for slaves */ struct net_device *slave; /* Ptr to Slave device for masters */ struct isdn_net_local_s *next; /* Ptr to next link in bundle */ struct isdn_net_local_s *last; /* Ptr to last link in bundle */ struct isdn_net_dev_s *netdev; /* Ptr to netdev */ struct sk_buff_head super_tx_queue; /* List of supervisory frames to */ /* be transmitted asap */ atomic_t frame_cnt; /* number of frames currently */ /* queued in HL driver */ /* Ptr to orig. hard_header_cache */ spinlock_t xmit_lock; /* used to protect the xmit path of */ /* a particular channel (including */ /* the frame_cnt */ int pppbind; /* ippp device for bindings */ int dialtimeout; /* How long shall we try on dialing? (jiffies) */ int dialwait; /* How long shall we wait after failed attempt? (jiffies) */ ulong dialstarted; /* jiffies of first dialing-attempt */ ulong dialwait_timer; /* jiffies of earliest next dialing-attempt */ int huptimeout; /* How long will the connection be up? (seconds) */#ifdef CONFIG_ISDN_X25 struct concap_device_ops *dops; /* callbacks used by encapsulator */#endif /* use an own struct for that in later versions */ ulong cisco_myseq; /* Local keepalive seq. for Cisco */ ulong cisco_mineseen; /* returned keepalive seq. from remote */ ulong cisco_yourseq; /* Remote keepalive seq. for Cisco */ int cisco_keepalive_period; /* keepalive period */ ulong cisco_last_slarp_in; /* jiffie of last keepalive packet we received */ char cisco_line_state; /* state of line according to keepalive packets */ char cisco_debserint; /* debugging flag of cisco hdlc with slarp */ struct timer_list cisco_timer; struct work_struct tqueue;} isdn_net_local;/* the interface itself */typedef struct isdn_net_dev_s { isdn_net_local *local; isdn_net_local *queue; /* circular list of all bundled channels, which are currently online */ spinlock_t queue_lock; /* lock to protect queue */ void *next; /* Pointer to next isdn-interface */ struct net_device *dev; /* interface to upper levels */#ifdef CONFIG_ISDN_PPP ippp_bundle * pb; /* pointer to the common bundle structure * with the per-bundle data */#endif#ifdef CONFIG_ISDN_X25 struct concap_proto *cprot; /* connection oriented encapsulation protocol */#endif} isdn_net_dev;/*===================== End of ip-over-ISDN stuff ===========================*//*======================= Start of ISDN-tty stuff ===========================*/#define ISDN_ASYNC_MAGIC 0x49344C01 /* for paranoia-checking */#define ISDN_ASYNC_INITIALIZED 0x80000000 /* port was initialized */#define ISDN_ASYNC_CALLOUT_ACTIVE 0x40000000 /* Call out device active */#define ISDN_ASYNC_NORMAL_ACTIVE 0x20000000 /* Normal device active */#define ISDN_ASYNC_CLOSING 0x08000000 /* Serial port is closing */#define ISDN_ASYNC_CTS_FLOW 0x04000000 /* Do CTS flow control */#define ISDN_ASYNC_CHECK_CD 0x02000000 /* i.e., CLOCAL */#define ISDN_ASYNC_HUP_NOTIFY 0x0001 /* Notify tty on hangups/closes */#define ISDN_ASYNC_SESSION_LOCKOUT 0x0100 /* Lock cua opens on session */#define ISDN_ASYNC_PGRP_LOCKOUT 0x0200 /* Lock cua opens on pgrp */#define ISDN_ASYNC_CALLOUT_NOHUP 0x0400 /* No hangup for cui */#define ISDN_ASYNC_SPLIT_TERMIOS 0x0008 /* Sep. termios for dialin/out */#define ISDN_SERIAL_XMIT_SIZE 1024 /* Default bufsize for write */#define ISDN_SERIAL_XMIT_MAX 4000 /* Maximum bufsize for write */#define ISDN_SERIAL_TYPE_NORMAL 1#define ISDN_SERIAL_TYPE_CALLOUT 2#ifdef CONFIG_ISDN_AUDIO/* For using sk_buffs with audio we need some private variables * within each sk_buff. For this purpose, we declare a struct here, * and put it always at the private skb->cb data array. A few macros help * accessing the variables. */typedef struct _isdn_audio_data { unsigned short dle_count; unsigned char lock;} isdn_audio_data_t;#define ISDN_AUDIO_SKB_DLECOUNT(skb) (((isdn_audio_data_t *)&skb->cb[0])->dle_count)#define ISDN_AUDIO_SKB_LOCK(skb) (((isdn_audio_data_t *)&skb->cb[0])->lock)#endif/* Private data of AT-command-interpreter */typedef struct atemu { u_char profile[ISDN_MODEM_NUMREG]; /* Modem-Regs. Profile 0 */ u_char mdmreg[ISDN_MODEM_NUMREG]; /* Modem-Registers */ char pmsn[ISDN_MSNLEN]; /* EAZ/MSNs Profile 0 */ char msn[ISDN_MSNLEN]; /* EAZ/MSN */ char plmsn[ISDN_LMSNLEN]; /* Listening MSNs Profile 0 */ char lmsn[ISDN_LMSNLEN]; /* Listening MSNs */ char cpn[ISDN_MSNLEN]; /* CalledPartyNumber on incoming call */ char connmsg[ISDN_CMSGLEN]; /* CONNECT-Msg from HL-Driver */#ifdef CONFIG_ISDN_AUDIO u_char vpar[10]; /* Voice-parameters */ int lastDLE; /* Flag for voice-coding: DLE seen */#endif int mdmcmdl; /* Length of Modem-Commandbuffer */ int pluscount; /* Counter for +++ sequence */ u_long lastplus; /* Timestamp of last + */ int carrierwait; /* Seconds of carrier waiting */ char mdmcmd[255]; /* Modem-Commandbuffer */ unsigned int charge; /* Charge units of current connection */} atemu;/* Private data (similar to async_struct in <linux/serial.h>) */typedef struct modem_info { int magic; struct module *owner; int flags; /* defined in tty.h */ int x_char; /* xon/xoff character */ int mcr; /* Modem control register */ int msr; /* Modem status register */ int lsr; /* Line status register */ int line; int count; /* # of fd on device */ int blocked_open; /* # of blocked opens */ long session; /* Session of opening process */ long pgrp; /* pgrp of opening process */ int online; /* 1 = B-Channel is up, drop data */ /* 2 = B-Channel is up, deliver d.*/ int dialing; /* Dial in progress or ATA */ int rcvsched; /* Receive needs schedule */ int isdn_driver; /* Index to isdn-driver */ int isdn_channel; /* Index to isdn-channel */ int drv_index; /* Index to dev->usage */ int ncarrier; /* Flag: schedule NO CARRIER */ unsigned char last_cause[8]; /* Last cause message */ unsigned char last_num[ISDN_MSNLEN]; /* Last phone-number */ unsigned char last_l2; /* Last layer-2 protocol */ unsigned char last_si; /* Last service */ unsigned char last_lhup; /* Last hangup local? */ unsigned char last_dir; /* Last direction (in or out) */ struct timer_list nc_timer; /* Timer for delayed NO CARRIER */ int send_outstanding;/* # of outstanding send-requests */ int xmit_size; /* max. # of chars in xmit_buf */ int xmit_count; /* # of chars in xmit_buf */ unsigned char *xmit_buf; /* transmit buffer */ struct sk_buff_head xmit_queue; /* transmit queue */ atomic_t xmit_lock; /* Semaphore for isdn_tty_write */#ifdef CONFIG_ISDN_AUDIO int vonline; /* Voice-channel status */ /* Bit 0 = recording */ /* Bit 1 = playback */ /* Bit 2 = playback, DLE-ETX seen */ struct sk_buff_head dtmf_queue; /* queue for dtmf results */ void *adpcms; /* state for adpcm decompression */ void *adpcmr; /* state for adpcm compression */ void *dtmf_state; /* state for dtmf decoder */ void *silence_state; /* state for silence detection */#endif#ifdef CONFIG_ISDN_TTY_FAX struct T30_s *fax; /* T30 Fax Group 3 data/interface */ int faxonline; /* Fax-channel status */#endif struct tty_struct *tty; /* Pointer to corresponding tty */ atemu emu; /* AT-emulator data */ struct ktermios normal_termios; /* For saving termios structs */ struct ktermios callout_termios; wait_queue_head_t open_wait, close_wait; struct semaphore write_sem; spinlock_t readlock;} modem_info;#define ISDN_MODEM_WINSIZE 8/* Description of one ISDN-tty */typedef struct _isdn_modem { int refcount; /* Number of opens */ struct tty_driver *tty_modem; /* tty-device */ struct tty_struct *modem_table[ISDN_MAX_CHANNELS]; /* ?? copied from Orig */ struct ktermios *modem_termios[ISDN_MAX_CHANNELS]; struct ktermios *modem_termios_locked[ISDN_MAX_CHANNELS]; modem_info info[ISDN_MAX_CHANNELS]; /* Private data */} isdn_modem_t;/*======================= End of ISDN-tty stuff ============================*//*======================== Start of V.110 stuff ============================*/#define V110_BUFSIZE 1024typedef struct { int nbytes; /* 1 Matrixbyte -> nbytes in stream */ int nbits; /* Number of used bits in streambyte */ unsigned char key; /* Bitmask in stream eg. 11 (nbits=2) */ int decodelen; /* Amount of data in decodebuf */ int SyncInit; /* Number of sync frames to send */ unsigned char *OnlineFrame; /* Precalculated V110 idle frame */ unsigned char *OfflineFrame; /* Precalculated V110 sync Frame */ int framelen; /* Length of frames */ int skbuser; /* Number of unacked userdata skbs */ int skbidle; /* Number of unacked idle/sync skbs */ int introducer; /* Local vars for decoder */ int dbit; unsigned char b; int skbres; /* space to reserve in outgoing skb */ int maxsize; /* maxbufsize of lowlevel driver */ unsigned char *encodebuf; /* temporary buffer for encoding */ unsigned char decodebuf[V110_BUFSIZE]; /* incomplete V110 matrices */} isdn_v110_stream;/*========================= End of V.110 stuff =============================*//*======================= Start of general stuff ===========================*/typedef struct { char *next; char *private;} infostruct;#define DRV_FLAG_RUNNING 1#define DRV_FLAG_REJBUS 2#define DRV_FLAG_LOADED 4/* Description of hardware-level-driver */typedef struct _isdn_driver { ulong online; /* Channel-Online flags */ ulong flags; /* Misc driver Flags */ int locks; /* Number of locks for this driver */ int channels; /* Number of channels */ wait_queue_head_t st_waitq; /* Wait-Queue for status-read's */ int maxbufsize; /* Maximum Buffersize supported */ unsigned long pktcount; /* Until now: unused */ int stavail; /* Chars avail on Status-device */ isdn_if *interface; /* Interface to driver */ int *rcverr; /* Error-counters for B-Ch.-receive */ int *rcvcount; /* Byte-counters for B-Ch.-receive */#ifdef CONFIG_ISDN_AUDIO unsigned long DLEflag; /* Flags: Insert DLE at next read */#endif struct sk_buff_head *rpqueue; /* Pointers to start of Rcv-Queue */ wait_queue_head_t *rcv_waitq; /* Wait-Queues for B-Channel-Reads */ wait_queue_head_t *snd_waitq; /* Wait-Queue for B-Channel-Send's */ char msn2eaz[10][ISDN_MSNLEN]; /* Mapping-Table MSN->EAZ */} isdn_driver_t;/* Main driver-data */typedef struct isdn_devt { struct module *owner; spinlock_t lock; unsigned short flags; /* Bitmapped Flags: */ int drivers; /* Current number of drivers */ int channels; /* Current number of channels */ int net_verbose; /* Verbose-Flag */ int modempoll; /* Flag: tty-read active */ spinlock_t timerlock; int tflags; /* Timer-Flags: */ /* see ISDN_TIMER_..defines */ int global_flags; infostruct *infochain; /* List of open info-devs. */ wait_queue_head_t info_waitq; /* Wait-Queue for isdninfo */ struct timer_list timer; /* Misc.-function Timer */ int chanmap[ISDN_MAX_CHANNELS]; /* Map minor->device-channel */ int drvmap[ISDN_MAX_CHANNELS]; /* Map minor->driver-index */ int usage[ISDN_MAX_CHANNELS]; /* Used by tty/ip/voice */ char num[ISDN_MAX_CHANNELS][ISDN_MSNLEN]; /* Remote number of active ch.*/ int m_idx[ISDN_MAX_CHANNELS]; /* Index for mdm.... */ isdn_driver_t *drv[ISDN_MAX_DRIVERS]; /* Array of drivers */ isdn_net_dev *netdev; /* Linked list of net-if's */ char drvid[ISDN_MAX_DRIVERS][20];/* Driver-ID */ struct task_struct *profd; /* For iprofd */ isdn_modem_t mdm; /* tty-driver-data */ isdn_net_dev *rx_netdev[ISDN_MAX_CHANNELS]; /* rx netdev-pointers */ isdn_net_dev *st_netdev[ISDN_MAX_CHANNELS]; /* stat netdev-pointers */ ulong ibytes[ISDN_MAX_CHANNELS]; /* Statistics incoming bytes */ ulong obytes[ISDN_MAX_CHANNELS]; /* Statistics outgoing bytes */ int v110emu[ISDN_MAX_CHANNELS]; /* V.110 emulator-mode 0=none */ atomic_t v110use[ISDN_MAX_CHANNELS]; /* Usage-Semaphore for stream */ isdn_v110_stream *v110[ISDN_MAX_CHANNELS]; /* V.110 private data */ struct mutex mtx; /* serialize list access*/ unsigned long global_features;} isdn_dev;extern isdn_dev *dev;#endif /* __KERNEL__ */#endif /* __ISDN_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -