#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
-#include "classifier.h"
#include "compiler.h"
#include "flow.h"
+#include "list.h"
#include "match.h"
#include "netdev.h"
#include "openflow/nicira-ext.h"
* variant. */
OFPUTIL_P_OF12_OXM = 1 << 5,
OFPUTIL_P_OF13_OXM = 1 << 6,
-#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | OFPUTIL_P_OF13_OXM)
+ OFPUTIL_P_OF14_OXM = 1 << 7,
+#define OFPUTIL_P_ANY_OXM (OFPUTIL_P_OF12_OXM | OFPUTIL_P_OF13_OXM | OFPUTIL_P_OF14_OXM)
#define OFPUTIL_P_NXM_OF11_UP (OFPUTIL_P_OF10_NXM_ANY | OFPUTIL_P_OF11_STD | \
OFPUTIL_P_ANY_OXM)
#define OFPUTIL_P_OF13_UP (OFPUTIL_P_OF13_OXM)
+#define OFPUTIL_P_OF14_UP (OFPUTIL_P_OF14_OXM)
+
/* All protocols. */
-#define OFPUTIL_P_ANY ((1 << 7) - 1)
+#define OFPUTIL_P_ANY ((1 << 8) - 1)
/* Protocols in which a specific table may be specified in flow_mods. */
#define OFPUTIL_P_TID (OFPUTIL_P_OF10_STD_TID | \
struct match match;
ovs_be64 cookie;
uint8_t table_id;
- uint32_t duration_sec;
- uint32_t duration_nsec;
uint16_t priority;
uint16_t idle_timeout;
uint16_t hard_timeout;
+ uint32_t duration_sec;
+ uint32_t duration_nsec;
int idle_age; /* Seconds since last packet, -1 if unknown. */
int hard_age; /* Seconds since last change, -1 if unknown. */
uint64_t packet_count; /* Packet count, UINT64_MAX if unknown. */
/* Flow removed message, independent of protocol. */
struct ofputil_flow_removed {
struct match match;
- uint16_t priority;
ovs_be64 cookie;
+ uint16_t priority;
uint8_t reason; /* One of OFPRR_*. */
uint8_t table_id; /* 255 if message didn't include table ID. */
uint32_t duration_sec;
/* Abstract ofp_table_mod. */
struct ofputil_table_mod {
uint8_t table_id; /* ID of the table, 0xff indicates all tables. */
- uint32_t config;
+ enum ofp_table_config config;
};
enum ofperr ofputil_decode_table_mod(const struct ofp_header *,
uint16_t idle_timeout;
uint16_t hard_timeout;
uint8_t table_id;
+ uint16_t priority;
ovs_be64 cookie;
struct match *match;
- uint16_t priority;
struct ofpact *ofpacts;
size_t ofpacts_len;
struct bucket_counter *bucket_stats;
};
-/* Group features reply, independent of protocol. */
+/* Group features reply, independent of protocol.
+ *
+ * Only OF1.2 and later support group features replies. */
struct ofputil_group_features {
uint32_t types; /* Bitmap of OFPGT_* values supported. */
uint32_t capabilities; /* Bitmap of OFPGFC12_* capability supported. */
uint32_t max_groups[4]; /* Maximum number of groups for each type. */
- uint32_t actions[4]; /* Bitmaps of OFPAT_* that are supported. */
+
+ /* Bitmaps of OFPAT_* that are supported. OF1.2+ actions only. */
+ uint32_t actions[4];
};
/* Group desc reply, independent of protocol. */