42e2cb774730288a37318f7ebc32fcc76404364d
[sliver-openvswitch.git] / datapath / chain.h
1 #ifndef CHAIN_H
2 #define CHAIN_H 1
3
4 #include <linux/types.h>
5
6 struct sw_flow;
7 struct sw_flow_key;
8 struct datapath;
9
10
11 #define TABLE_LINEAR_MAX_FLOWS  100
12 #define TABLE_HASH_MAX_FLOWS    65536
13
14 /* Set of tables chained together in sequence from cheap to expensive. */
15 #define CHAIN_MAX_TABLES 4
16 struct sw_chain {
17         int n_tables;
18         struct sw_table *tables[CHAIN_MAX_TABLES];
19
20         struct datapath *dp;
21 };
22
23 struct sw_chain *chain_create(struct datapath *);
24 struct sw_flow *chain_lookup(struct sw_chain *, const struct sw_flow_key *);
25 int chain_insert(struct sw_chain *, struct sw_flow *);
26 int chain_delete(struct sw_chain *, const struct sw_flow_key *, uint16_t, int);
27 int chain_timeout(struct sw_chain *);
28 void chain_destroy(struct sw_chain *);
29 void chain_print_stats(struct sw_chain *);
30
31 #endif /* chain.h */