brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · 479623e Raw
183 lines · c
1/*2 * Kernel CAPI 2.0 Module3 *4 * Copyright 1999 by Carsten Paeth <calle@calle.de>5 * Copyright 2002 by Kai Germaschewski <kai@germaschewski.name>6 *7 * This software may be used and distributed according to the terms8 * of the GNU General Public License, incorporated herein by reference.9 *10 */11 12 13#include <linux/kernel.h>14#include <linux/spinlock.h>15#include <linux/list.h>16#include <linux/isdn/capilli.h>17 18#ifdef KCAPI_DEBUG19#define DBG(format, arg...) do {					\20		printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \21	} while (0)22#else23#define DBG(format, arg...) /* */24#endif25 26enum {27	CAPI_CTR_DETACHED = 0,28	CAPI_CTR_DETECTED = 1,29	CAPI_CTR_LOADING  = 2,30	CAPI_CTR_RUNNING  = 3,31};32 33extern struct capi_ctr *capi_controller[CAPI_MAXCONTR];34extern struct mutex capi_controller_lock;35 36extern struct capi20_appl *capi_applications[CAPI_MAXAPPL];37 38void kcapi_proc_init(void);39void kcapi_proc_exit(void);40 41struct capi20_appl {42	u16 applid;43	capi_register_params rparam;44	void (*recv_message)(struct capi20_appl *ap, struct sk_buff *skb);45	void *private;46 47	/* internal to kernelcapi.o */48	unsigned long nrecvctlpkt;49	unsigned long nrecvdatapkt;50	unsigned long nsentctlpkt;51	unsigned long nsentdatapkt;52	struct mutex recv_mtx;53	struct sk_buff_head recv_queue;54	struct work_struct recv_work;55	int release_in_progress;56};57 58u16 capi20_isinstalled(void);59u16 capi20_register(struct capi20_appl *ap);60u16 capi20_release(struct capi20_appl *ap);61u16 capi20_put_message(struct capi20_appl *ap, struct sk_buff *skb);62u16 capi20_get_manufacturer(u32 contr, u8 buf[CAPI_MANUFACTURER_LEN]);63u16 capi20_get_version(u32 contr, struct capi_version *verp);64u16 capi20_get_serial(u32 contr, u8 serial[CAPI_SERIAL_LEN]);65u16 capi20_get_profile(u32 contr, struct capi_profile *profp);66int capi20_manufacturer(unsigned long cmd, void __user *data);67 68#define CAPICTR_UP			069#define CAPICTR_DOWN			170 71int kcapi_init(void);72void kcapi_exit(void);73 74/*----- basic-type definitions -----*/75 76typedef __u8 *_cstruct;77 78typedef enum {79	CAPI_COMPOSE,80	CAPI_DEFAULT81} _cmstruct;82 83/*84   The _cmsg structure contains all possible CAPI 2.0 parameter.85   All parameters are stored here first. The function CAPI_CMSG_2_MESSAGE86   assembles the parameter and builds CAPI2.0 conform messages.87   CAPI_MESSAGE_2_CMSG disassembles CAPI 2.0 messages and stores the88   parameter in the _cmsg structure89 */90 91typedef struct {92	/* Header */93	__u16 ApplId;94	__u8 Command;95	__u8 Subcommand;96	__u16 Messagenumber;97 98	/* Parameter */99	union {100		__u32 adrController;101		__u32 adrPLCI;102		__u32 adrNCCI;103	} adr;104 105	_cmstruct AdditionalInfo;106	_cstruct B1configuration;107	__u16 B1protocol;108	_cstruct B2configuration;109	__u16 B2protocol;110	_cstruct B3configuration;111	__u16 B3protocol;112	_cstruct BC;113	_cstruct BChannelinformation;114	_cmstruct BProtocol;115	_cstruct CalledPartyNumber;116	_cstruct CalledPartySubaddress;117	_cstruct CallingPartyNumber;118	_cstruct CallingPartySubaddress;119	__u32 CIPmask;120	__u32 CIPmask2;121	__u16 CIPValue;122	__u32 Class;123	_cstruct ConnectedNumber;124	_cstruct ConnectedSubaddress;125	__u32 Data;126	__u16 DataHandle;127	__u16 DataLength;128	_cstruct FacilityConfirmationParameter;129	_cstruct Facilitydataarray;130	_cstruct FacilityIndicationParameter;131	_cstruct FacilityRequestParameter;132	__u16 FacilitySelector;133	__u16 Flags;134	__u32 Function;135	_cstruct HLC;136	__u16 Info;137	_cstruct InfoElement;138	__u32 InfoMask;139	__u16 InfoNumber;140	_cstruct Keypadfacility;141	_cstruct LLC;142	_cstruct ManuData;143	__u32 ManuID;144	_cstruct NCPI;145	__u16 Reason;146	__u16 Reason_B3;147	__u16 Reject;148	_cstruct Useruserdata;149 150	/* intern */151	unsigned l, p;152	unsigned char *par;153	__u8 *m;154 155	/* buffer to construct message */156	__u8 buf[180];157 158} _cmsg;159 160/*-----------------------------------------------------------------------*/161 162/*163 * Debugging / Tracing functions164 */165 166char *capi_cmd2str(__u8 cmd, __u8 subcmd);167 168typedef struct {169	u_char	*buf;170	u_char	*p;171	size_t	size;172	size_t	pos;173} _cdebbuf;174 175#define	CDEBUG_SIZE	1024176#define	CDEBUG_GSIZE	4096177 178void cdebbuf_free(_cdebbuf *cdb);179int cdebug_init(void);180void cdebug_exit(void);181 182_cdebbuf *capi_message2str(__u8 *msg);183