实验中需要有匹配域是通配的,比如IP通配某一部分掩码,官方文档上对于这一部分写的不是很清楚,摸索之后发现写法如下:
以一个tuple的形式将掩码和匹配项写在一起即可
match = parser.OFPMatch(
eth_type=flow_info[],
ipv4_src=("10.0.0.0","255.255.255.252"), ipv4_dst=flow_info[])
self.add_flow(datapath, , match, actions,idle_timeout=, hard_timeout=)
self.logger.info("**********entry is added*************")
相应的,删除一个带有指定域通配的流表的做法如下:
ofp = datapath.ofproto
ofp_parser = datapath.ofproto_parser
cookie = cookie_mask =
table_id =
idle_timeout =
hard_timeout =
priority =
buffer_id = ofp.OFP_NO_BUFFER
match = ofp_parser.OFPMatch(eth_type=flow_info[],
ipv4_src=("10.0.0.0","255.255.255.252"),
ipv4_dst="10.0.0.4")
self.add_flow(datapath, , match, actions,idle_timeout=,
hard_timeout=)
req = ofp_parser.OFPFlowMod(datapath, cookie, cookie_mask,
table_id, ofp.OFPFC_DELETE,
idle_timeout, hard_timeout,
priority, buffer_id,
dst_port, ofp.OFPG_ANY,
ofp.OFPFF_SEND_FLOW_REM,
match)
datapath.send_msg(req)
self.logger.info("**********entry is deleted*************")