projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
datapath: add skb mark matching and set action
[openvswitch]
/
lib
/
flow.h
diff --git
a/lib/flow.h
b/lib/flow.h
index 5f4b8cb530a0372b70e44e3af653ff18454e6ccc..804fee6016a3d73b65be72bbc95ce727a1062d77 100644
(file)
--- a/
lib/flow.h
+++ b/
lib/flow.h
@@
-36,7
+36,7
@@
struct ofpbuf;
/* This sequence number should be incremented whenever anything involving flows
* or the wildcarding of flows changes. This will cause build assertion
* failures in places which likely need to be updated. */
/* This sequence number should be incremented whenever anything involving flows
* or the wildcarding of flows changes. This will cause build assertion
* failures in places which likely need to be updated. */
-#define FLOW_WC_SEQ 1
7
+#define FLOW_WC_SEQ 1
8
#define FLOW_N_REGS 8
BUILD_ASSERT_DECL(FLOW_N_REGS <= NXM_NX_MAX_REGS);
#define FLOW_N_REGS 8
BUILD_ASSERT_DECL(FLOW_N_REGS <= NXM_NX_MAX_REGS);
@@
-87,6
+87,7
@@
struct flow {
uint32_t in_port; /* Input port. OpenFlow port number
unless in DPIF code, in which case it
is the datapath port number. */
uint32_t in_port; /* Input port. OpenFlow port number
unless in DPIF code, in which case it
is the datapath port number. */
+ uint32_t skb_mark; /* Packet mark. */
ovs_be16 vlan_tci; /* If 802.1Q, TCI | VLAN_CFI; otherwise 0. */
ovs_be16 dl_type; /* Ethernet frame type. */
ovs_be16 tp_src; /* TCP/UDP source port. */
ovs_be16 vlan_tci; /* If 802.1Q, TCI | VLAN_CFI; otherwise 0. */
ovs_be16 dl_type; /* Ethernet frame type. */
ovs_be16 tp_src; /* TCP/UDP source port. */
@@
-105,8
+106,8
@@
BUILD_ASSERT_DECL(sizeof(struct flow) % 4 == 0);
#define FLOW_U32S (sizeof(struct flow) / 4)
/* Remember to update FLOW_WC_SEQ when changing 'struct flow'. */
#define FLOW_U32S (sizeof(struct flow) / 4)
/* Remember to update FLOW_WC_SEQ when changing 'struct flow'. */
-BUILD_ASSERT_DECL(sizeof(struct flow) == sizeof(struct flow_tnl) + 1
44
&&
- FLOW_WC_SEQ == 1
7
);
+BUILD_ASSERT_DECL(sizeof(struct flow) == sizeof(struct flow_tnl) + 1
52
&&
+ FLOW_WC_SEQ == 1
8
);
/* Represents the metadata fields of struct flow. */
struct flow_metadata {
/* Represents the metadata fields of struct flow. */
struct flow_metadata {
@@
-116,8
+117,8
@@
struct flow_metadata {
uint16_t in_port; /* OpenFlow port or zero. */
};
uint16_t in_port; /* OpenFlow port or zero. */
};
-void flow_extract(struct ofpbuf *, uint32_t priority,
const struct flow_tnl *
,
- uint16_t in_port, struct flow *);
+void flow_extract(struct ofpbuf *, uint32_t priority,
uint32_t mark
,
+
const struct flow_tnl *,
uint16_t in_port, struct flow *);
void flow_zero_wildcards(struct flow *, const struct flow_wildcards *);
void flow_get_metadata(const struct flow *, struct flow_metadata *);
void flow_zero_wildcards(struct flow *, const struct flow_wildcards *);
void flow_get_metadata(const struct flow *, struct flow_metadata *);