With these additions, flow_metadata actually contains all of the metadata
fields in a struct flow.

Signed-off-by: Ben Pfaff <b...@nicira.com>
---
 lib/flow.c     |    2 ++
 lib/flow.h     |    2 ++
 lib/ofp-util.c |   10 ++++++++++
 3 files changed, 14 insertions(+)

diff --git a/lib/flow.c b/lib/flow.c
index 680b3230..ac3c32b 100644
--- a/lib/flow.c
+++ b/lib/flow.c
@@ -497,6 +497,8 @@ flow_get_metadata(const struct flow *flow, struct 
flow_metadata *fmd)
     fmd->metadata = flow->metadata;
     memcpy(fmd->regs, flow->regs, sizeof fmd->regs);
     fmd->in_port = flow->in_port;
+    fmd->skb_priority = flow->skb_priority;
+    fmd->skb_mark = flow->skb_mark;
 }
 
 char *
diff --git a/lib/flow.h b/lib/flow.h
index 6d8615b..40f5968 100644
--- a/lib/flow.h
+++ b/lib/flow.h
@@ -121,6 +121,8 @@ struct flow_metadata {
     ovs_be64 metadata;               /* OpenFlow 1.1+ metadata field. */
     uint32_t regs[FLOW_N_REGS];      /* Registers. */
     uint32_t in_port;                /* OpenFlow port or zero. */
+    uint32_t skb_priority;           /* Packet priority for QoS. */
+    uint32_t skb_mark;               /* Packet mark. */
 };
 
 void flow_extract(struct ofpbuf *, uint32_t priority, uint32_t mark,
diff --git a/lib/ofp-util.c b/lib/ofp-util.c
index 658b541..da9af72 100644
--- a/lib/ofp-util.c
+++ b/lib/ofp-util.c
@@ -2445,6 +2445,8 @@ ofputil_decode_packet_in_finish(struct ofputil_packet_in 
*pin,
     pin->fmd.tunnel = match->flow.tunnel;
     pin->fmd.metadata = match->flow.metadata;
     memcpy(pin->fmd.regs, match->flow.regs, sizeof pin->fmd.regs);
+    pin->fmd.skb_priority = match->flow.skb_priority;
+    pin->fmd.skb_mark = match->flow.skb_mark;
 }
 
 enum ofperr
@@ -2560,6 +2562,14 @@ ofputil_packet_in_to_match(const struct 
ofputil_packet_in *pin,
     }
 
     match_set_in_port(match, pin->fmd.in_port);
+
+    if (pin->fmd.skb_priority) {
+        match_set_skb_priority(match, pin->fmd.skb_priority);
+    }
+
+    if (pin->fmd.skb_mark) {
+        match_set_skb_priority(match, pin->fmd.skb_mark);
+    }
 }
 
 /* Converts abstract ofputil_packet_in 'pin' into a PACKET_IN message
-- 
1.7.10.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to