diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-06-23 10:43:56 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-06-23 15:54:26 +0900 |
commit | 1e9855b2eb02f17f4ea41ee62bb1d328bcaf6d16 (patch) | |
tree | a7ae062ec343223fc00e9ddb459a5b35725a8454 | |
parent | c68f4bb41456d8e988abe301d5d18dc572981479 (diff) |
of1.2: add OXM_OF_IP_DSCP
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Reviewed-by: Simon Horman <horms@verge.net.au>
-rw-r--r-- | ryu/ofproto/ofproto_v1_2_parser.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_v1_2_parser.py b/ryu/ofproto/ofproto_v1_2_parser.py index 8923ffd9..f33bb98c 100644 --- a/ryu/ofproto/ofproto_v1_2_parser.py +++ b/ryu/ofproto/ofproto_v1_2_parser.py @@ -867,6 +867,7 @@ class Flow(object): self.dl_type = 0 self.vlan_vid = 0 self.vlan_pcp = 0 + self.ip_dscp = 0 self.arp_op = 0 self.arp_spa = 0 self.arp_tpa = 0 @@ -938,6 +939,10 @@ class OFPMatch(object): self.fields.append( OFPMatchField.make(ofproto_v1_2.OXM_OF_VLAN_PCP)) + if self.wc.ft_test(ofproto_v1_2.OFPXMT_OFB_IP_DSCP): + self.fields.append( + OFPMatchField.make(ofproto_v1_2.OXM_OF_IP_DSCP)) + if self.wc.ft_test(ofproto_v1_2.OFPXMT_OFB_ARP_OP): self.fields.append( OFPMatchField.make(ofproto_v1_2.OXM_OF_ARP_OP)) @@ -1036,6 +1041,10 @@ class OFPMatch(object): self.wc.ft_set(ofproto_v1_2.OFPXMT_OFB_VLAN_PCP) self.flow.vlan_pcp = pcp + def set_ip_dscp(self, ip_dscp): + self.wc.ft_set(ofproto_v1_2.OFPXMT_OFB_IP_DSCP) + self.flow.ip_dscp = ip_dscp + def set_arp_opcode(self, arp_op): self.wc.ft_set(ofproto_v1_2.OFPXMT_OFB_ARP_OP) self.flow.arp_op = arp_op @@ -1240,6 +1249,19 @@ class MTVlanPcp(OFPMatchField): return MTVlanPcp(header) +@OFPMatchField.register_field_header([ofproto_v1_2.OXM_OF_IP_DSCP]) +class MTIPDscp(OFPMatchField): + def __init__(self, header): + super(MTIPDscp, self).__init__(header, '!B') + + def serialize(self, buf, offset, match): + self.put(buf, offset, match.flow.ip_dscp) + + @classmethod + def parser(cls, header, buf, offset): + return MTIPDscp(header) + + @OFPMatchField.register_field_header([ofproto_v1_2.OXM_OF_ARP_OP]) class MTArpOp(OFPMatchField): def __init__(self, header): |