實驗中需要有比對域是通配的,比如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*************")