+/* Vendor extension message. */
+struct ofp_vendor_header {
+ struct ofp_header header; /* OFPT_VENDOR. */
+ ovs_be32 vendor; /* Vendor ID:
+ * - MSB 0: low-order bytes are IEEE OUI.
+ * - MSB != 0: defined by OpenFlow
+ * consortium. */
+
+ /* In theory everything after 'vendor' is vendor specific. In practice,
+ * the vendors we support put a 32-bit subtype here. We'll change this
+ * structure if we start adding support for other vendor formats. */
+ ovs_be32 subtype; /* Vendor-specific subtype. */
+
+ /* Followed by vendor-defined additional data. */
+};
+OFP_ASSERT(sizeof(struct ofp_vendor_header) == 16);
+
+/* Vendor extension stats message. */
+struct ofp11_vendor_stats_msg {
+ struct ofp11_stats_msg osm; /* Type OFPST_VENDOR. */
+ ovs_be32 vendor; /* Vendor ID:
+ * - MSB 0: low-order bytes are IEEE OUI.
+ * - MSB != 0: defined by OpenFlow
+ * consortium. */
+
+ /* In theory everything after 'vendor' is vendor specific. In practice,
+ * the vendors we support put a 32-bit subtype here. We'll change this
+ * structure if we start adding support for other vendor formats. */
+ ovs_be32 subtype; /* Vendor-specific subtype. */
+
+ /* Followed by vendor-defined additional data. */
+};
+OFP_ASSERT(sizeof(struct ofp11_vendor_stats_msg) == 24);