Merge branch 'mainstream'
[sliver-openvswitch.git] / include / openflow / openflow-common.h
index 93cc2c4..ef9409f 100644 (file)
@@ -435,6 +435,14 @@ enum ofp_group {
     OFPG_ANY        = 0xffffffff   /* Wildcard, for flow stats requests. */
 };
 
+/* Group configuration flags */
+enum ofp_group_capabilities {
+    OFPGFC_SELECT_WEIGHT   = 1 << 0, /* Support weight for select groups */
+    OFPGFC_SELECT_LIVENESS = 1 << 1, /* Support liveness for select groups */
+    OFPGFC_CHAINING        = 1 << 2, /* Support chaining groups */
+    OFPGFC_CHAINING_CHECKS = 1 << 3, /* Check chaining for loops and delete */
+};
+
 enum ofp_hello_elem_type {
     OFPHET_VERSIONBITMAP          = 1, /* Bitmap of version supported. */
 };
@@ -457,4 +465,22 @@ struct ofp_vendor_header {
 };
 OFP_ASSERT(sizeof(struct ofp_vendor_header) == 12);
 
+/* Table numbering. Tables can use any number up to OFPT_MAX. */
+enum ofp_table {
+    /* Last usable table number. */
+    OFPTT_MAX = 0xfe,
+
+    /* Fake tables. */
+    OFPTT_ALL = 0xff         /* Wildcard table used for table config,
+                                flow stats and flow deletes. */
+};
+
+enum ofp_table_config {
+    OFPTC_TABLE_MISS_CONTROLLER = 0 << 0, /* Send to controller. */
+    OFPTC_TABLE_MISS_CONTINUE = 1 << 0, /* Continue to the next table in the
+                                           pipeline (OpenFlow 1.0 behavior). */
+    OFPTC_TABLE_MISS_DROP = 2 << 0, /* Drop the packet. */
+    OFPTC_TABLE_MISS_MASK = 3 << 0
+};
+
 #endif /* openflow/openflow-common.h */