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

layer2.h (2408B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Layer 2 defines
      4 *
      5 * Copyright 2008  by Karsten Keil <kkeil@novell.com>
      6 */
      7
      8#include <linux/mISDNif.h>
      9#include <linux/skbuff.h>
     10#include "fsm.h"
     11
     12#define MAX_WINDOW	8
     13
     14struct manager {
     15	struct mISDNchannel	ch;
     16	struct mISDNchannel	bcast;
     17	u_long			options;
     18	struct list_head	layer2;
     19	rwlock_t		lock;
     20	struct FsmInst		deact;
     21	struct FsmTimer		datimer;
     22	struct sk_buff_head	sendq;
     23	struct mISDNchannel	*up;
     24	u_int			nextid;
     25	u_int			lastid;
     26};
     27
     28struct teimgr {
     29	int			ri;
     30	int			rcnt;
     31	struct FsmInst		tei_m;
     32	struct FsmTimer		timer;
     33	int			tval, nval;
     34	struct layer2		*l2;
     35	struct manager		*mgr;
     36};
     37
     38struct laddr {
     39	u_char	A;
     40	u_char	B;
     41};
     42
     43struct layer2 {
     44	struct list_head	list;
     45	struct mISDNchannel	ch;
     46	u_long			flag;
     47	int			id;
     48	struct mISDNchannel	*up;
     49	signed char		sapi;
     50	signed char		tei;
     51	struct laddr		addr;
     52	u_int			maxlen;
     53	struct teimgr		*tm;
     54	u_int			vs, va, vr;
     55	int			rc;
     56	u_int			window;
     57	u_int			sow;
     58	struct FsmInst		l2m;
     59	struct FsmTimer		t200, t203;
     60	int			T200, N200, T203;
     61	u_int			next_id;
     62	u_int			down_id;
     63	struct sk_buff		*windowar[MAX_WINDOW];
     64	struct sk_buff_head	i_queue;
     65	struct sk_buff_head	ui_queue;
     66	struct sk_buff_head	down_queue;
     67	struct sk_buff_head	tmp_queue;
     68};
     69
     70enum {
     71	ST_L2_1,
     72	ST_L2_2,
     73	ST_L2_3,
     74	ST_L2_4,
     75	ST_L2_5,
     76	ST_L2_6,
     77	ST_L2_7,
     78	ST_L2_8,
     79};
     80
     81#define L2_STATE_COUNT (ST_L2_8 + 1)
     82
     83extern struct layer2	*create_l2(struct mISDNchannel *, u_int,
     84				   u_long, int, int);
     85extern int		tei_l2(struct layer2 *, u_int, u_long arg);
     86
     87
     88/* from tei.c */
     89extern int		l2_tei(struct layer2 *, u_int, u_long arg);
     90extern void		TEIrelease(struct layer2 *);
     91extern int		TEIInit(u_int *);
     92extern void		TEIFree(void);
     93
     94#define MAX_L2HEADER_LEN 4
     95
     96#define RR	0x01
     97#define RNR	0x05
     98#define REJ	0x09
     99#define SABME	0x6f
    100#define SABM	0x2f
    101#define DM	0x0f
    102#define UI	0x03
    103#define DISC	0x43
    104#define UA	0x63
    105#define FRMR	0x87
    106#define XID	0xaf
    107
    108#define CMD	0
    109#define RSP	1
    110
    111#define LC_FLUSH_WAIT 1
    112
    113#define FLG_LAPB	0
    114#define FLG_LAPD	1
    115#define FLG_ORIG	2
    116#define FLG_MOD128	3
    117#define FLG_PEND_REL	4
    118#define FLG_L3_INIT	5
    119#define FLG_T200_RUN	6
    120#define FLG_ACK_PEND	7
    121#define FLG_REJEXC	8
    122#define FLG_OWN_BUSY	9
    123#define FLG_PEER_BUSY	10
    124#define FLG_DCHAN_BUSY	11
    125#define FLG_L1_ACTIV	12
    126#define FLG_ESTAB_PEND	13
    127#define FLG_PTP		14
    128#define FLG_FIXED_TEI	15
    129#define FLG_L2BLOCK	16
    130#define FLG_L1_NOTREADY	17
    131#define FLG_LAPD_NET	18