minidlna support now Samsung TV C550/C650 (thx amir909)
[tomato.git] / release / src / router / openvpn / gremlin.h
blobca234d9a44465c585477450d94c4602e511d0b35
1 /*
2 * OpenVPN -- An application to securely tunnel IP networks
3 * over a single UDP port, with support for SSL/TLS-based
4 * session authentication and key exchange,
5 * packet encryption, packet authentication, and
6 * packet compression.
8 * Copyright (C) 2002-2009 OpenVPN Technologies, Inc. <sales@openvpn.net>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2
12 * as published by the Free Software Foundation.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program (see the file COPYING included with this
21 * distribution); if not, write to the Free Software Foundation, Inc.,
22 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #ifndef GREMLIN_H
26 #define GREMLIN_H
28 #ifdef ENABLE_DEBUG
31 * Gremlin options, presented as bitmask argument to --gremlin directive
34 #define GREMLIN_CONNECTION_FLOOD_SHIFT (0)
35 #define GREMLIN_CONNECTION_FLOOD_MASK (0x07)
37 #define GREMLIN_PACKET_FLOOD_SHIFT (3)
38 #define GREMLIN_PACKET_FLOOD_MASK (0x03)
40 #define GREMLIN_CORRUPT_SHIFT (5)
41 #define GREMLIN_CORRUPT_MASK (0x03)
43 #define GREMLIN_UP_DOWN_SHIFT (7)
44 #define GREMLIN_UP_DOWN_MASK (0x03)
46 /* 512:1/500 1024:1/100 1536:1/50 */
48 #define GREMLIN_DROP_SHIFT (9)
49 #define GREMLIN_DROP_MASK (0x03)
51 /* extract gremlin parms */
53 #define GREMLIN_CONNECTION_FLOOD_LEVEL(x) (((x)>>GREMLIN_CONNECTION_FLOOD_SHIFT) & GREMLIN_CONNECTION_FLOOD_MASK)
54 #define GREMLIN_PACKET_FLOOD_LEVEL(x) (((x)>>GREMLIN_PACKET_FLOOD_SHIFT) & GREMLIN_PACKET_FLOOD_MASK)
55 #define GREMLIN_CORRUPT_LEVEL(x) (((x)>>GREMLIN_CORRUPT_SHIFT) & GREMLIN_CORRUPT_MASK)
56 #define GREMLIN_UP_DOWN_LEVEL(x) (((x)>>GREMLIN_UP_DOWN_SHIFT) & GREMLIN_UP_DOWN_MASK)
57 #define GREMLIN_DROP_LEVEL(x) (((x)>>GREMLIN_DROP_SHIFT) & GREMLIN_DROP_MASK)
59 #include "buffer.h"
61 struct packet_flood_parms
63 int n_packets;
64 int packet_size;
67 bool ask_gremlin (int flags);
68 void corrupt_gremlin (struct buffer* buf, int flags);
69 struct packet_flood_parms get_packet_flood_parms (int level);
71 #endif
72 #endif