};
OFP_ASSERT(sizeof(struct ofp14_role_prop_experimenter) == 12);
+/* Bundle control message types */
+enum ofp14_bundle_ctrl_type {
+ OFPBCT_OPEN_REQUEST = 0,
+ OFPBCT_OPEN_REPLY = 1,
+ OFPBCT_CLOSE_REQUEST = 2,
+ OFPBCT_CLOSE_REPLY = 3,
+ OFPBCT_COMMIT_REQUEST = 4,
+ OFPBCT_COMMIT_REPLY = 5,
+ OFPBCT_DISCARD_REQUEST = 6,
+ OFPBCT_DISCARD_REPLY = 7,
+};
+
+/* Bundle configuration flags. */
+enum ofp14_bundle_flags {
+ OFPBF_ATOMIC = 1 << 0, /* Execute atomically. */
+ OFPBF_ORDERED = 1 << 1, /* Execute in specified order. */
+};
+
+/* Message structure for OFPT_BUNDLE_CONTROL and OFPT_BUNDLE_ADD_MESSAGE. */
+struct ofp14_bundle_ctrl_msg {
+ ovs_be32 bundle_id; /* Identify the bundle. */
+ ovs_be16 type; /* OFPT_BUNDLE_CONTROL: one of OFPBCT_*.
+ * OFPT_BUNDLE_ADD_MESSAGE: not used. */
+ ovs_be16 flags; /* Bitmap of OFPBF_* flags. */
+ /* Followed by:
+ * - For OFPT_BUNDLE_ADD_MESSAGE only, an encapsulated OpenFlow message,
+ * beginning with an ofp_header whose xid is identical to this message's
+ * outer xid.
+ * - For OFPT_BUNDLE_ADD_MESSAGE only, and only if at least one property is
+ * present, 0 to 7 bytes of padding to align on a 64-bit boundary.
+ * - Zero or more properties (see struct ofp14_bundle_prop_header). */
+};
+OFP_ASSERT(sizeof(struct ofp14_bundle_ctrl_msg) == 8);
+
#endif /* openflow/openflow-1.4.h */