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

isdnhdlc.h (1732B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * hdlc.h  --  General purpose ISDN HDLC decoder.
      4 *
      5 * Implementation of a HDLC decoder/encoder in software.
      6 * Necessary because some ISDN devices don't have HDLC
      7 * controllers.
      8 *
      9 * Copyright (C)
     10 *	2009	Karsten Keil		<keil@b1-systems.de>
     11 *	2002	Wolfgang Mües		<wolfgang@iksw-muees.de>
     12 *	2001	Frode Isaksen		<fisaksen@bewan.com>
     13 *	2001	Kai Germaschewski	<kai.germaschewski@gmx.de>
     14 */
     15
     16#ifndef __ISDNHDLC_H__
     17#define __ISDNHDLC_H__
     18
     19struct isdnhdlc_vars {
     20	int bit_shift;
     21	int hdlc_bits1;
     22	int data_bits;
     23	int ffbit_shift;	/* encoding only */
     24	int state;
     25	int dstpos;
     26
     27	u16 crc;
     28
     29	u8 cbin;
     30	u8 shift_reg;
     31	u8 ffvalue;
     32
     33	/* set if transferring data */
     34	u32 data_received:1;
     35	/* set if D channel (send idle instead of flags) */
     36	u32 dchannel:1;
     37	/* set if 56K adaptation */
     38	u32 do_adapt56:1;
     39	/* set if in closing phase (need to send CRC + flag) */
     40	u32 do_closing:1;
     41	/* set if data is bitreverse */
     42	u32 do_bitreverse:1;
     43};
     44
     45/* Feature Flags */
     46#define HDLC_56KBIT	0x01
     47#define HDLC_DCHANNEL	0x02
     48#define HDLC_BITREVERSE	0x04
     49
     50/*
     51  The return value from isdnhdlc_decode is
     52  the frame length, 0 if no complete frame was decoded,
     53  or a negative error number
     54*/
     55#define HDLC_FRAMING_ERROR     1
     56#define HDLC_CRC_ERROR         2
     57#define HDLC_LENGTH_ERROR      3
     58
     59extern void	isdnhdlc_rcv_init(struct isdnhdlc_vars *hdlc, u32 features);
     60
     61extern int	isdnhdlc_decode(struct isdnhdlc_vars *hdlc, const u8 *src,
     62			int slen, int *count, u8 *dst, int dsize);
     63
     64extern void	isdnhdlc_out_init(struct isdnhdlc_vars *hdlc, u32 features);
     65
     66extern int	isdnhdlc_encode(struct isdnhdlc_vars *hdlc, const u8 *src,
     67			u16 slen, int *count, u8 *dst, int dsize);
     68
     69#endif /* __ISDNHDLC_H__ */