Initial import
[sliver-openvswitch.git] / datapath / chain.h
1 #ifndef CHAIN_H
2 #define CHAIN_H 1
3
4 struct sw_flow;
5 struct sw_flow_key;
6 struct datapath;
7
8
9 #define TABLE_LINEAR_MAX_FLOWS  100
10 #define TABLE_HASH_MAX_FLOWS    65536
11 #define TABLE_MAC_MAX_FLOWS      1024
12 #define TABLE_MAC_NUM_BUCKETS   1024
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 *, 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 */