cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kcapi.h (4094B)


      1/*
      2 * Kernel CAPI 2.0 Module
      3 *
      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 terms
      8 * 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_DEBUG
     19#define DBG(format, arg...) do {					\
     20		printk(KERN_DEBUG "%s: " format "\n" , __func__ , ## arg); \
     21	} while (0)
     22#else
     23#define DBG(format, arg...) /* */
     24#endif
     25
     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			0
     69#define CAPICTR_DOWN			1
     70
     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_DEFAULT
     81} _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_MESSAGE
     86   assembles the parameter and builds CAPI2.0 conform messages.
     87   CAPI_MESSAGE_2_CMSG disassembles CAPI 2.0 messages and stores the
     88   parameter in the _cmsg structure
     89 */
     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 functions
    164 */
    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	1024
    176#define	CDEBUG_GSIZE	4096
    177
    178void cdebbuf_free(_cdebbuf *cdb);
    179int cdebug_init(void);
    180void cdebug_exit(void);
    181
    182_cdebbuf *capi_message2str(__u8 *msg);