1 /* See the DRL-LICENSE file for this file's software license. */
6 #define _XOPEN_SOURCE 600 /* for pthread_rwlock_t */
10 #include <netinet/in_systm.h>
11 #include <netinet/in.h>
12 #include <netinet/ip.h>
13 #include <netinet/tcp.h>
14 #include <netinet/udp.h>
16 #include <sys/types.h>
17 #include <sys/socket.h>
22 #include <arpa/inet.h>
32 #include <ifaddrs.h> /* defines getifaddrs */
35 enum policies { POLICY_GRD = 1, POLICY_FPS = 2 };
36 enum commfabrics { COMM_MESH = 1, COMM_GOSSIP = 2 };
37 enum accountings { ACT_STANDARD = 1, ACT_SAMPLEHOLD = 2, ACT_SIMPLE = 3, ACT_MULTIPLE = 4};
38 enum dampenings { DAMPEN_NONE = 0, DAMPEN_TEST = 1, DAMPEN_FAILED = 2, DAMPEN_PASSED = 3, DAMPEN_SKIP = 4};
40 /* The comm library also has definitions for comfabrics. This prevents us
41 * from defining them twice. */
44 /* global constants */
45 #define IDENT_CLEAN_INTERVAL 5 /* in seconds */
47 #define LIMITER_LISTEN_PORT 9001
50 * The weight percentage increase that must occur before FPS does increase
53 #define LARGE_INCREASE_PERCENTAGE (0.05)
56 * Below this rate, a limiter is basically treated as idle, and its limit is
57 * raised to allow for increases should the limiter suddenly become active.
59 * This is used for FPS only. See estimate.c
61 #define FLOW_START_THRESHOLD (6000)
63 #define CLOSE_ENOUGH (0.99)
66 * All fields come from the ip protocol header.
68 * 1 byte for the protocol.
69 * 4 bytes for the source ip.
70 * 4 bytes for the destination ip.
71 * 2 bytes for the source port.
72 * 2 bytes for the destination port.
76 #define FLOWKEYSIZE (13)
78 /* Causes each identity to track every flow in two tables. One table is as
79 * specified in the config file. The second is a standard table with
80 * "perfect" accounting so that we can compare the two. Turn this off for
81 * any type of production setting. */
82 #define SHADOW_ACCTING
84 /* forward declare some structs */
88 /* prototypes for threaded processing DRL model */
89 void handle_estimation(void *arg);