Hybrid ICN (hICN) plugin
v21.06-rc0-4-g18fa668
libtransport
src
protocols
fec
fec.h
1
/*
2
* fec.c -- forward error correction based on Vandermonde matrices
3
* 980614
4
* (C) 1997-98 Luigi Rizzo (luigi@iet.unipi.it)
5
*
6
* Portions derived from code by Phil Karn (karn@ka9q.ampr.org),
7
* Robert Morelos-Zaragoza (robert@spectra.eng.hawaii.edu) and Hari
8
* Thirumoorthy (harit@spectra.eng.hawaii.edu), Aug 1995
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
* 2. Redistributions in binary form must reproduce the above
17
* copyright notice, this list of conditions and the following
18
* disclaimer in the documentation and/or other materials
19
* provided with the distribution.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
22
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
24
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS
25
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
28
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
30
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
32
* OF SUCH DAMAGE.
33
*/
34
35
/*
36
* The following parameter defines how many bits are used for
37
* field elements. The code supports any value from 2 to 16
38
* but fastest operation is achieved with 8 bit elements
39
* This is the only parameter you may want to change.
40
*/
41
#ifndef GF_BITS
42
#define GF_BITS 8
/* code over GF(2**GF_BITS) - change to suit */
43
#endif
44
45
#if (GF_BITS <= 8)
46
typedef
unsigned
char
gf;
47
#else
48
typedef
unsigned
short
gf;
49
#endif
50
51
#define GF_SIZE ((1 << GF_BITS) - 1)
/* powers of \alpha */
52
53
struct
fec_parms
{
54
unsigned
long
magic;
55
int
k, n;
/* parameters of the code */
56
gf *enc_matrix;
57
};
58
59
void
fec_free(
struct
fec_parms
*p);
60
struct
fec_parms
*fec_new(
int
k,
int
n);
61
62
void
fec_encode(
struct
fec_parms
*code, gf *src[], gf *fec,
int
index,
int
sz);
63
int
fec_decode(
struct
fec_parms
*code, gf *pkt[],
int
index[],
int
sz);
64
65
/* end of file */
fec_parms
Definition:
fec.h:53
Generated by
1.8.17