Added OFPFC_MODIFY_STRICT flow mod command.
[openvswitch] / switch / chain.h
index cd3f205bb0983d14ff0e8ab8d282c0efeda8c17e..9ad54d0eee779f685fcf0cc14f100d7e4e146036 100644 (file)
 #ifndef CHAIN_H
 #define CHAIN_H 1
 
+#include <stdint.h>
+
 struct sw_flow;
 struct sw_flow_key;
-struct datapath;
+struct ofp_action;
+struct list;
 
 #define TABLE_LINEAR_MAX_FLOWS  100
 #define TABLE_HASH_MAX_FLOWS    65536
 #define TABLE_MAC_MAX_FLOWS      1024
 #define TABLE_MAC_NUM_BUCKETS   1024
 
+/* Set of tables chained together in sequence from cheap to expensive. */
+#define CHAIN_MAX_TABLES 4
+struct sw_chain {
+    int n_tables;
+    struct sw_table *tables[CHAIN_MAX_TABLES];
+};
+
 struct sw_chain *chain_create(void);
 struct sw_flow *chain_lookup(struct sw_chain *, const struct sw_flow_key *);
 int chain_insert(struct sw_chain *, struct sw_flow *);
-int chain_delete(struct sw_chain *, const struct sw_flow_key *, int);
-int chain_timeout(struct sw_chain *, struct datapath *);
+int chain_modify(struct sw_chain *, const struct sw_flow_key *, 
+        uint16_t, int, const struct ofp_action *, int);
+int chain_delete(struct sw_chain *, const struct sw_flow_key *, uint16_t, int);
+void chain_timeout(struct sw_chain *, struct list *deleted);
 void chain_destroy(struct sw_chain *);
-void chain_print_stats(struct sw_chain *);
 
 #endif /* chain.h */