of13: prefix private attributes of OFPMatch with _

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
YAMAMOTO Takashi 2013-06-18 16:35:30 +09:00 committed by FUJITA Tomonori
parent ea7798fc69
commit 2214fae178

View File

@ -343,219 +343,227 @@ class FlowWildcards(object):
class OFPMatch(object):
def __init__(self):
super(OFPMatch, self).__init__()
self.wc = FlowWildcards()
self.flow = Flow()
self._wc = FlowWildcards()
self._flow = Flow()
self.fields = []
def append_field(self, header, value, mask=None):
self.fields.append(OFPMatchField.make(header, value, mask))
def serialize(self, buf, offset):
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IN_PORT):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IN_PORT):
self.append_field(ofproto_v1_3.OXM_OF_IN_PORT,
self.flow.in_port)
self._flow.in_port)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IN_PHY_PORT):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IN_PHY_PORT):
self.append_field(ofproto_v1_3.OXM_OF_IN_PHY_PORT,
self.flow.in_phy_port)
self._flow.in_phy_port)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_METADATA):
if self.wc.metadata_mask == UINT64_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_METADATA):
if self._wc.metadata_mask == UINT64_MAX:
header = ofproto_v1_3.OXM_OF_METADATA
else:
header = ofproto_v1_3.OXM_OF_METADATA_W
self.append_field(header, self.flow.metadata,
self.wc.metadata_mask)
self.append_field(header, self._flow.metadata,
self._wc.metadata_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_DST):
if self.wc.dl_dst_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_DST):
if self._wc.dl_dst_mask:
header = ofproto_v1_3.OXM_OF_ETH_DST_W
else:
header = ofproto_v1_3.OXM_OF_ETH_DST
self.append_field(header, self.flow.dl_dst, self.wc.dl_dst_mask)
self.append_field(header, self._flow.dl_dst, self._wc.dl_dst_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_SRC):
if self.wc.dl_src_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_SRC):
if self._wc.dl_src_mask:
header = ofproto_v1_3.OXM_OF_ETH_SRC_W
else:
header = ofproto_v1_3.OXM_OF_ETH_SRC
self.append_field(header, self.flow.dl_src, self.wc.dl_src_mask)
self.append_field(header, self._flow.dl_src, self._wc.dl_src_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_TYPE):
self.append_field(ofproto_v1_3.OXM_OF_ETH_TYPE, self.flow.dl_type)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ETH_TYPE):
self.append_field(ofproto_v1_3.OXM_OF_ETH_TYPE, self._flow.dl_type)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_VLAN_VID):
if self.wc.vlan_vid_mask == UINT16_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_VLAN_VID):
if self._wc.vlan_vid_mask == UINT16_MAX:
header = ofproto_v1_3.OXM_OF_VLAN_VID
else:
header = ofproto_v1_3.OXM_OF_VLAN_VID_W
self.append_field(header, self.flow.vlan_vid,
self.wc.vlan_vid_mask)
self.append_field(header, self._flow.vlan_vid,
self._wc.vlan_vid_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_VLAN_PCP):
self.append_field(ofproto_v1_3.OXM_OF_VLAN_PCP, self.flow.vlan_pcp)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_VLAN_PCP):
self.append_field(ofproto_v1_3.OXM_OF_VLAN_PCP,
self._flow.vlan_pcp)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_DSCP):
self.append_field(ofproto_v1_3.OXM_OF_IP_DSCP, self.flow.ip_dscp)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_DSCP):
self.append_field(ofproto_v1_3.OXM_OF_IP_DSCP, self._flow.ip_dscp)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_ECN):
self.append_field(ofproto_v1_3.OXM_OF_IP_ECN, self.flow.ip_ecn)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_ECN):
self.append_field(ofproto_v1_3.OXM_OF_IP_ECN, self._flow.ip_ecn)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_PROTO):
self.append_field(ofproto_v1_3.OXM_OF_IP_PROTO, self.flow.ip_proto)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IP_PROTO):
self.append_field(ofproto_v1_3.OXM_OF_IP_PROTO,
self._flow.ip_proto)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV4_SRC):
if self.wc.ipv4_src_mask == UINT32_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV4_SRC):
if self._wc.ipv4_src_mask == UINT32_MAX:
header = ofproto_v1_3.OXM_OF_IPV4_SRC
else:
header = ofproto_v1_3.OXM_OF_IPV4_SRC_W
self.append_field(header, self.flow.ipv4_src,
self.wc.ipv4_src_mask)
self.append_field(header, self._flow.ipv4_src,
self._wc.ipv4_src_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV4_DST):
if self.wc.ipv4_dst_mask == UINT32_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV4_DST):
if self._wc.ipv4_dst_mask == UINT32_MAX:
header = ofproto_v1_3.OXM_OF_IPV4_DST
else:
header = ofproto_v1_3.OXM_OF_IPV4_DST_W
self.append_field(header, self.flow.ipv4_dst,
self.wc.ipv4_dst_mask)
self.append_field(header, self._flow.ipv4_dst,
self._wc.ipv4_dst_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TCP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_TCP_SRC, self.flow.tcp_src)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TCP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_TCP_SRC, self._flow.tcp_src)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TCP_DST):
self.append_field(ofproto_v1_3.OXM_OF_TCP_DST, self.flow.tcp_dst)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TCP_DST):
self.append_field(ofproto_v1_3.OXM_OF_TCP_DST, self._flow.tcp_dst)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_UDP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_UDP_SRC, self.flow.udp_src)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_UDP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_UDP_SRC, self._flow.udp_src)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_UDP_DST):
self.append_field(ofproto_v1_3.OXM_OF_UDP_DST, self.flow.udp_dst)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_UDP_DST):
self.append_field(ofproto_v1_3.OXM_OF_UDP_DST, self._flow.udp_dst)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_SCTP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_SCTP_SRC, self.flow.sctp_src)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_SCTP_SRC):
self.append_field(ofproto_v1_3.OXM_OF_SCTP_SRC,
self._flow.sctp_src)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_SCTP_DST):
self.append_field(ofproto_v1_3.OXM_OF_SCTP_DST, self.flow.sctp_dst)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_SCTP_DST):
self.append_field(ofproto_v1_3.OXM_OF_SCTP_DST,
self._flow.sctp_dst)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV4_TYPE):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV4_TYPE):
self.append_field(ofproto_v1_3.OXM_OF_ICMPV4_TYPE,
self.flow.icmpv4_type)
self._flow.icmpv4_type)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV4_CODE):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV4_CODE):
self.append_field(ofproto_v1_3.OXM_OF_ICMPV4_CODE,
self.flow.icmpv4_code)
self._flow.icmpv4_code)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_OP):
self.append_field(ofproto_v1_3.OXM_OF_ARP_OP, self.flow.arp_op)
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_OP):
self.append_field(ofproto_v1_3.OXM_OF_ARP_OP, self._flow.arp_op)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_SPA):
if self.wc.arp_spa_mask == UINT32_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_SPA):
if self._wc.arp_spa_mask == UINT32_MAX:
header = ofproto_v1_3.OXM_OF_ARP_SPA
else:
header = ofproto_v1_3.OXM_OF_ARP_SPA_W
self.append_field(header, self.flow.arp_spa, self.wc.arp_spa_mask)
self.append_field(header, self._flow.arp_spa,
self._wc.arp_spa_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_TPA):
if self.wc.arp_tpa_mask == UINT32_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_TPA):
if self._wc.arp_tpa_mask == UINT32_MAX:
header = ofproto_v1_3.OXM_OF_ARP_TPA
else:
header = ofproto_v1_3.OXM_OF_ARP_TPA_W
self.append_field(header, self.flow.arp_tpa, self.wc.arp_tpa_mask)
self.append_field(header, self._flow.arp_tpa,
self._wc.arp_tpa_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_SHA):
if self.wc.arp_sha_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_SHA):
if self._wc.arp_sha_mask:
header = ofproto_v1_3.OXM_OF_ARP_SHA_W
else:
header = ofproto_v1_3.OXM_OF_ARP_SHA
self.append_field(header, self.flow.arp_sha, self.wc.arp_sha_mask)
self.append_field(header, self._flow.arp_sha,
self._wc.arp_sha_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_THA):
if self.wc.arp_tha_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ARP_THA):
if self._wc.arp_tha_mask:
header = ofproto_v1_3.OXM_OF_ARP_THA_W
else:
header = ofproto_v1_3.OXM_OF_ARP_THA
self.append_field(header, self.flow.arp_tha, self.wc.arp_tha_mask)
self.append_field(header, self._flow.arp_tha,
self._wc.arp_tha_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC):
if len(self.wc.ipv6_src_mask):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC):
if len(self._wc.ipv6_src_mask):
header = ofproto_v1_3.OXM_OF_IPV6_SRC_W
else:
header = ofproto_v1_3.OXM_OF_IPV6_SRC
self.append_field(header, self.flow.ipv6_src,
self.wc.ipv6_src_mask)
self.append_field(header, self._flow.ipv6_src,
self._wc.ipv6_src_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_DST):
if len(self.wc.ipv6_dst_mask):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_DST):
if len(self._wc.ipv6_dst_mask):
header = ofproto_v1_3.OXM_OF_IPV6_DST_W
else:
header = ofproto_v1_3.OXM_OF_IPV6_DST
self.append_field(header, self.flow.ipv6_dst,
self.wc.ipv6_dst_mask)
self.append_field(header, self._flow.ipv6_dst,
self._wc.ipv6_dst_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_FLABEL):
if self.wc.ipv6_flabel_mask == UINT32_MAX:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_FLABEL):
if self._wc.ipv6_flabel_mask == UINT32_MAX:
header = ofproto_v1_3.OXM_OF_IPV6_FLABEL
else:
header = ofproto_v1_3.OXM_OF_IPV6_FLABEL_W
self.append_field(header, self.flow.ipv6_flabel,
self.wc.ipv6_flabel_mask)
self.append_field(header, self._flow.ipv6_flabel,
self._wc.ipv6_flabel_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV6_TYPE):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV6_TYPE):
self.append_field(ofproto_v1_3.OXM_OF_ICMPV6_TYPE,
self.flow.icmpv6_type)
self._flow.icmpv6_type)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV6_CODE):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_ICMPV6_CODE):
self.append_field(ofproto_v1_3.OXM_OF_ICMPV6_CODE,
self.flow.icmpv6_code)
self._flow.icmpv6_code)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TARGET):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TARGET):
self.append_field(ofproto_v1_3.OXM_OF_IPV6_ND_TARGET,
self.flow.ipv6_nd_target)
self._flow.ipv6_nd_target)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_SLL):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_SLL):
self.append_field(ofproto_v1_3.OXM_OF_IPV6_ND_SLL,
self.flow.ipv6_nd_sll)
self._flow.ipv6_nd_sll)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TLL):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TLL):
self.append_field(ofproto_v1_3.OXM_OF_IPV6_ND_TLL,
self.flow.ipv6_nd_tll)
self._flow.ipv6_nd_tll)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_LABEL):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_LABEL):
self.append_field(ofproto_v1_3.OXM_OF_MPLS_LABEL,
self.flow.mpls_label)
self._flow.mpls_label)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_TC):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_TC):
self.append_field(ofproto_v1_3.OXM_OF_MPLS_TC,
self.flow.mpls_tc)
self._flow.mpls_tc)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_BOS):
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_MPLS_BOS):
self.append_field(ofproto_v1_3.OXM_OF_MPLS_BOS,
self.flow.mpls_bos)
self._flow.mpls_bos)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_PBB_ISID):
if self.wc.pbb_isid_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_PBB_ISID):
if self._wc.pbb_isid_mask:
header = ofproto_v1_3.OXM_OF_PBB_ISID_W
else:
header = ofproto_v1_3.OXM_OF_PBB_ISID
self.append_field(header, self.flow.pbb_isid,
self.wc.pbb_isid_mask)
self.append_field(header, self._flow.pbb_isid,
self._wc.pbb_isid_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID):
if self.wc.tunnel_id_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID):
if self._wc.tunnel_id_mask:
header = ofproto_v1_3.OXM_OF_TUNNEL_ID_W
else:
header = ofproto_v1_3.OXM_OF_TUNNEL_ID
self.append_field(header, self.flow.tunnel_id,
self.wc.tunnel_id_mask)
self.append_field(header, self._flow.tunnel_id,
self._wc.tunnel_id_mask)
if self.wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR):
if self.wc.ipv6_exthdr_mask:
if self._wc.ft_test(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR):
if self._wc.ipv6_exthdr_mask:
header = ofproto_v1_3.OXM_OF_IPV6_EXTHDR_W
else:
header = ofproto_v1_3.OXM_OF_IPV6_EXTHDR
self.append_field(header, self.flow.ipv6_exthdr,
self.wc.ipv6_exthdr_mask)
self.append_field(header, self._flow.ipv6_exthdr,
self._wc.ipv6_exthdr_mask)
field_offset = offset + 4
for f in self.fields:
@ -590,238 +598,238 @@ class OFPMatch(object):
return match
def set_in_port(self, port):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IN_PORT)
self.flow.in_port = port
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IN_PORT)
self._flow.in_port = port
def set_in_phy_port(self, phy_port):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IN_PHY_PORT)
self.flow.in_phy_port = phy_port
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IN_PHY_PORT)
self._flow.in_phy_port = phy_port
def set_metadata(self, metadata):
self.set_metadata_masked(metadata, UINT64_MAX)
def set_metadata_masked(self, metadata, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_METADATA)
self.wc.metadata_mask = mask
self.flow.metadata = metadata & mask
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_METADATA)
self._wc.metadata_mask = mask
self._flow.metadata = metadata & mask
def set_dl_dst(self, dl_dst):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_DST)
self.flow.dl_dst = dl_dst
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_DST)
self._flow.dl_dst = dl_dst
def set_dl_dst_masked(self, dl_dst, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_DST)
self.wc.dl_dst_mask = mask
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_DST)
self._wc.dl_dst_mask = mask
# bit-wise and of the corresponding elements of dl_dst and mask
self.flow.dl_dst = mac.haddr_bitand(dl_dst, mask)
self._flow.dl_dst = mac.haddr_bitand(dl_dst, mask)
def set_dl_src(self, dl_src):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_SRC)
self.flow.dl_src = dl_src
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_SRC)
self._flow.dl_src = dl_src
def set_dl_src_masked(self, dl_src, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_SRC)
self.wc.dl_src_mask = mask
self.flow.dl_src = mac.haddr_bitand(dl_src, mask)
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_SRC)
self._wc.dl_src_mask = mask
self._flow.dl_src = mac.haddr_bitand(dl_src, mask)
def set_dl_type(self, dl_type):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_TYPE)
self.flow.dl_type = dl_type
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ETH_TYPE)
self._flow.dl_type = dl_type
def set_vlan_vid(self, vid):
self.set_vlan_vid_masked(vid, UINT16_MAX)
def set_vlan_vid_masked(self, vid, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_VLAN_VID)
self.wc.vlan_vid_mask = mask
self.flow.vlan_vid = vid
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_VLAN_VID)
self._wc.vlan_vid_mask = mask
self._flow.vlan_vid = vid
def set_vlan_pcp(self, pcp):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_VLAN_PCP)
self.flow.vlan_pcp = pcp
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_VLAN_PCP)
self._flow.vlan_pcp = pcp
def set_ip_dscp(self, ip_dscp):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_DSCP)
self.flow.ip_dscp = ip_dscp
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_DSCP)
self._flow.ip_dscp = ip_dscp
def set_ip_ecn(self, ip_ecn):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_ECN)
self.flow.ip_ecn = ip_ecn
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_ECN)
self._flow.ip_ecn = ip_ecn
def set_ip_proto(self, ip_proto):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_PROTO)
self.flow.ip_proto = ip_proto
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IP_PROTO)
self._flow.ip_proto = ip_proto
def set_ipv4_src(self, ipv4_src):
self.set_ipv4_src_masked(ipv4_src, UINT32_MAX)
def set_ipv4_src_masked(self, ipv4_src, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV4_SRC)
self.flow.ipv4_src = ipv4_src
self.wc.ipv4_src_mask = mask
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV4_SRC)
self._flow.ipv4_src = ipv4_src
self._wc.ipv4_src_mask = mask
def set_ipv4_dst(self, ipv4_dst):
self.set_ipv4_dst_masked(ipv4_dst, UINT32_MAX)
def set_ipv4_dst_masked(self, ipv4_dst, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV4_DST)
self.flow.ipv4_dst = ipv4_dst
self.wc.ipv4_dst_mask = mask
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV4_DST)
self._flow.ipv4_dst = ipv4_dst
self._wc.ipv4_dst_mask = mask
def set_tcp_src(self, tcp_src):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TCP_SRC)
self.flow.tcp_src = tcp_src
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TCP_SRC)
self._flow.tcp_src = tcp_src
def set_tcp_dst(self, tcp_dst):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TCP_DST)
self.flow.tcp_dst = tcp_dst
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TCP_DST)
self._flow.tcp_dst = tcp_dst
def set_udp_src(self, udp_src):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_UDP_SRC)
self.flow.udp_src = udp_src
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_UDP_SRC)
self._flow.udp_src = udp_src
def set_udp_dst(self, udp_dst):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_UDP_DST)
self.flow.udp_dst = udp_dst
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_UDP_DST)
self._flow.udp_dst = udp_dst
def set_sctp_src(self, sctp_src):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_SCTP_SRC)
self.flow.sctp_src = sctp_src
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_SCTP_SRC)
self._flow.sctp_src = sctp_src
def set_sctp_dst(self, sctp_dst):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_SCTP_DST)
self.flow.sctp_dst = sctp_dst
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_SCTP_DST)
self._flow.sctp_dst = sctp_dst
def set_icmpv4_type(self, icmpv4_type):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV4_TYPE)
self.flow.icmpv4_type = icmpv4_type
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV4_TYPE)
self._flow.icmpv4_type = icmpv4_type
def set_icmpv4_code(self, icmpv4_code):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV4_CODE)
self.flow.icmpv4_code = icmpv4_code
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV4_CODE)
self._flow.icmpv4_code = icmpv4_code
def set_arp_opcode(self, arp_op):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_OP)
self.flow.arp_op = arp_op
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_OP)
self._flow.arp_op = arp_op
def set_arp_spa(self, arp_spa):
self.set_arp_spa_masked(arp_spa, UINT32_MAX)
def set_arp_spa_masked(self, arp_spa, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SPA)
self.wc.arp_spa_mask = mask
self.flow.arp_spa = arp_spa
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SPA)
self._wc.arp_spa_mask = mask
self._flow.arp_spa = arp_spa
def set_arp_tpa(self, arp_tpa):
self.set_arp_tpa_masked(arp_tpa, UINT32_MAX)
def set_arp_tpa_masked(self, arp_tpa, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_TPA)
self.wc.arp_tpa_mask = mask
self.flow.arp_tpa = arp_tpa
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_TPA)
self._wc.arp_tpa_mask = mask
self._flow.arp_tpa = arp_tpa
def set_arp_sha(self, arp_sha):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SHA)
self.flow.arp_sha = arp_sha
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SHA)
self._flow.arp_sha = arp_sha
def set_arp_sha_masked(self, arp_sha, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SHA)
self.wc.arp_sha_mask = mask
self.flow.arp_sha = mac.haddr_bitand(arp_sha, mask)
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_SHA)
self._wc.arp_sha_mask = mask
self._flow.arp_sha = mac.haddr_bitand(arp_sha, mask)
def set_arp_tha(self, arp_tha):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_THA)
self.flow.arp_tha = arp_tha
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_THA)
self._flow.arp_tha = arp_tha
def set_arp_tha_masked(self, arp_tha, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_THA)
self.wc.arp_tha_mask = mask
self.flow.arp_tha = mac.haddr_bitand(arp_tha, mask)
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ARP_THA)
self._wc.arp_tha_mask = mask
self._flow.arp_tha = mac.haddr_bitand(arp_tha, mask)
def set_ipv6_src(self, src):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC)
self.flow.ipv6_src = src
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC)
self._flow.ipv6_src = src
def set_ipv6_src_masked(self, src, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC)
self.wc.ipv6_src_mask = mask
self.flow.ipv6_src = [x & y for (x, y) in itertools.izip(src, mask)]
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_SRC)
self._wc.ipv6_src_mask = mask
self._flow.ipv6_src = [x & y for (x, y) in itertools.izip(src, mask)]
def set_ipv6_dst(self, dst):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_DST)
self.flow.ipv6_dst = dst
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_DST)
self._flow.ipv6_dst = dst
def set_ipv6_dst_masked(self, dst, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_DST)
self.wc.ipv6_dst_mask = mask
self.flow.ipv6_dst = [x & y for (x, y) in itertools.izip(dst, mask)]
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_DST)
self._wc.ipv6_dst_mask = mask
self._flow.ipv6_dst = [x & y for (x, y) in itertools.izip(dst, mask)]
def set_ipv6_flabel(self, flabel):
self.set_ipv6_flabel_masked(flabel, UINT32_MAX)
def set_ipv6_flabel_masked(self, flabel, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_FLABEL)
self.wc.ipv6_flabel_mask = mask
self.flow.ipv6_flabel = flabel
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_FLABEL)
self._wc.ipv6_flabel_mask = mask
self._flow.ipv6_flabel = flabel
def set_icmpv6_type(self, icmpv6_type):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV6_TYPE)
self.flow.icmpv6_type = icmpv6_type
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV6_TYPE)
self._flow.icmpv6_type = icmpv6_type
def set_icmpv6_code(self, icmpv6_code):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV6_CODE)
self.flow.icmpv6_code = icmpv6_code
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_ICMPV6_CODE)
self._flow.icmpv6_code = icmpv6_code
def set_ipv6_nd_target(self, target):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TARGET)
self.flow.ipv6_nd_target = target
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TARGET)
self._flow.ipv6_nd_target = target
def set_ipv6_nd_sll(self, ipv6_nd_sll):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_SLL)
self.flow.ipv6_nd_sll = ipv6_nd_sll
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_SLL)
self._flow.ipv6_nd_sll = ipv6_nd_sll
def set_ipv6_nd_tll(self, ipv6_nd_tll):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TLL)
self.flow.ipv6_nd_tll = ipv6_nd_tll
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_ND_TLL)
self._flow.ipv6_nd_tll = ipv6_nd_tll
def set_mpls_label(self, mpls_label):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_LABEL)
self.flow.mpls_label = mpls_label
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_LABEL)
self._flow.mpls_label = mpls_label
def set_mpls_tc(self, mpls_tc):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_TC)
self.flow.mpls_tc = mpls_tc
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_TC)
self._flow.mpls_tc = mpls_tc
def set_mpls_bos(self, bos):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_BOS)
self.flow.mpls_bos = bos
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_MPLS_BOS)
self._flow.mpls_bos = bos
def set_pbb_isid(self, isid):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_PBB_ISID)
self.flow.pbb_isid = isid
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_PBB_ISID)
self._flow.pbb_isid = isid
def set_pbb_isid_masked(self, isid, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_PBB_ISID)
self.wc.pbb_isid_mask = mask
self.flow.pbb_isid = isid
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_PBB_ISID)
self._wc.pbb_isid_mask = mask
self._flow.pbb_isid = isid
def set_tunnel_id(self, tunnel_id):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID)
self.flow.tunnel_id = tunnel_id
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID)
self._flow.tunnel_id = tunnel_id
def set_tunnel_id_masked(self, tunnel_id, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID)
self.wc.tunnel_id_mask = mask
self.flow.tunnel_id = tunnel_id
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_TUNNEL_ID)
self._wc.tunnel_id_mask = mask
self._flow.tunnel_id = tunnel_id
def set_ipv6_exthdr(self, hdr):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR)
self.flow.ipv6_exthdr = hdr
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR)
self._flow.ipv6_exthdr = hdr
def set_ipv6_exthdr_masked(self, hdr, mask):
self.wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR)
self.wc.ipv6_exthdr_mask = mask
self.flow.ipv6_exthdr = hdr
self._wc.ft_set(ofproto_v1_3.OFPXMT_OFB_IPV6_EXTHDR)
self._wc.ipv6_exthdr_mask = mask
self._flow.ipv6_exthdr = hdr
class OFPMatchField(object):