Blame view
net/openvswitch/flow_table.h
2.54 KB
e64457191
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
/* * Copyright (c) 2007-2013 Nicira, Inc. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA */ #ifndef FLOW_TABLE_H #define FLOW_TABLE_H 1 #include <linux/kernel.h> #include <linux/netlink.h> #include <linux/openvswitch.h> #include <linux/spinlock.h> #include <linux/types.h> #include <linux/rcupdate.h> #include <linux/if_ether.h> #include <linux/in6.h> #include <linux/jiffies.h> #include <linux/time.h> #include <linux/flex_array.h> #include <net/inet_ecn.h> #include <net/ip_tunnels.h> #include "flow.h" |
b637e4988
|
38 |
struct table_instance { |
e64457191
|
39 |
struct flex_array *buckets; |
b637e4988
|
40 |
unsigned int n_buckets; |
e64457191
|
41 |
struct rcu_head rcu; |
e64457191
|
42 43 44 45 |
int node_ver; u32 hash_seed; bool keep_flows; }; |
b637e4988
|
46 47 48 49 50 51 |
struct flow_table { struct table_instance __rcu *ti; struct list_head mask_list; unsigned long last_rehash; unsigned int count; }; |
e64457191
|
52 53 |
int ovs_flow_init(void); void ovs_flow_exit(void); |
e298e5057
|
54 |
struct sw_flow *ovs_flow_alloc(bool percpu_stats); |
e64457191
|
55 |
void ovs_flow_free(struct sw_flow *, bool deferred); |
b637e4988
|
56 57 |
int ovs_flow_tbl_init(struct flow_table *); int ovs_flow_tbl_count(struct flow_table *table); |
e80857cce
|
58 |
void ovs_flow_tbl_destroy(struct flow_table *table, bool deferred); |
b637e4988
|
59 |
int ovs_flow_tbl_flush(struct flow_table *flow_table); |
e64457191
|
60 |
|
618ed0c80
|
61 62 |
int ovs_flow_tbl_insert(struct flow_table *table, struct sw_flow *flow, struct sw_flow_mask *mask); |
e64457191
|
63 |
void ovs_flow_tbl_remove(struct flow_table *table, struct sw_flow *flow); |
1bd7116f1
|
64 |
int ovs_flow_tbl_num_masks(const struct flow_table *table); |
b637e4988
|
65 |
struct sw_flow *ovs_flow_tbl_dump_next(struct table_instance *table, |
e64457191
|
66 |
u32 *bucket, u32 *idx); |
5bb506324
|
67 |
struct sw_flow *ovs_flow_tbl_lookup_stats(struct flow_table *, |
1bd7116f1
|
68 69 |
const struct sw_flow_key *, u32 *n_mask_hit); |
5bb506324
|
70 71 |
struct sw_flow *ovs_flow_tbl_lookup(struct flow_table *, const struct sw_flow_key *); |
e64457191
|
72 73 74 |
bool ovs_flow_cmp_unmasked_key(const struct sw_flow *flow, struct sw_flow_match *match); |
e64457191
|
75 76 |
void ovs_flow_mask_key(struct sw_flow_key *dst, const struct sw_flow_key *src, const struct sw_flow_mask *mask); |
e64457191
|
77 |
#endif /* flow_table.h */ |