def add_controller_ips(self, controller_ips, vlan):
ofmsgs = []
for controller_ip in controller_ips:
controller_ip_host = ipaddr.IPNetwork(
'/'.join((str(controller_ip.ip),
str(controller_ip.max_prefixlen))))
if controller_ip_host.version == 4:
ofmsgs.append(self.valve_flowcontroller(
self.dp.eth_src_table,
self.valve_in_match(
eth_type=ether.ETH_TYPE_ARP,
nw_dst=controller_ip_host,
vlan=vlan),
priority=self.dp.highest_priority))
ofmsgs.append(self.valve_flowcontroller(
self.dp.eth_src_table,
self.valve_in_match(
eth_type=ether.ETH_TYPE_IP,
eth_dst=self.FAUCET_MAC,
vlan=vlan,
nw_proto=inet.IPPROTO_ICMP,
nw_src=controller_ip,
nw_dst=controller_ip_host),
priority=self.dp.highest_priority))
else:
ofmsgs.append(self.valve_flowcontroller(
self.dp.eth_src_table,
self.valve_in_match(
eth_type=ether.ETH_TYPE_IPV6,
vlan=vlan,
nw_proto=inet.IPPROTO_ICMPV6,
ipv6_nd_target=controller_ip_host,
icmpv6_type=icmpv6.ND_NEIGHBOR_SOLICIT),
priority=self.dp.highest_priority))
ofmsgs.append(self.valve_flowcontroller(
self.dp.eth_src_table,
self.valve_in_match(
eth_type=ether.ETH_TYPE_IPV6,
eth_dst=self.FAUCET_MAC,
vlan=vlan,
nw_proto=inet.IPPROTO_ICMPV6,
icmpv6_type=icmpv6.ND_NEIGHBOR_ADVERT),
priority=self.dp.highest_priority))
ofmsgs.append(self.valve_flowcontroller(
self.dp.eth_src_table,
self.valve_in_match(
eth_type=ether.ETH_TYPE_IPV6,
vlan=vlan,
nw_proto=inet.IPPROTO_ICMPV6,
nw_dst=controller_ip_host,
icmpv6_type=icmpv6.ICMPV6_ECHO_REQUEST),
priority=self.dp.highest_priority))
return ofmsgs
评论列表
文章目录