Esempio n. 1
0
 def control_plane_icmp_handler(self, in_port, vlan, eth_src, ipv4_pkt,
                                icmp_pkt):
     ofmsgs = []
     src_ip = ipaddr.IPv4Address(ipv4_pkt.src)
     dst_ip = ipaddr.IPv4Address(ipv4_pkt.dst)
     if (icmp_pkt is not None and vlan.ip_in_controller_subnet(src_ip)
             and vlan.ip_in_controller_subnet(dst_ip)):
         vid = self._vlan_vid(vlan, in_port)
         echo_reply = valve_packet.echo_reply(self.faucet_mac, eth_src, vid,
                                              dst_ip, src_ip, icmp_pkt.data)
         ofmsgs.append(valve_of.packetout(in_port, echo_reply.data))
     return ofmsgs
Esempio n. 2
0
 def control_plane_icmp_handler(self, in_port, vlan, eth_src,
                                ipv4_pkt, icmp_pkt):
     ofmsgs = []
     src_ip = ipaddr.IPv4Address(ipv4_pkt.src)
     dst_ip = ipaddr.IPv4Address(ipv4_pkt.dst)
     if (icmp_pkt is not None and
             vlan.ip_in_controller_subnet(src_ip) and
             vlan.ip_in_controller_subnet(dst_ip)):
         vid = self._vlan_vid(vlan, in_port)
         echo_reply = valve_packet.echo_reply(
             self.faucet_mac, eth_src, vid, dst_ip, src_ip, icmp_pkt.data)
         ofmsgs.append(valve_of.packetout(in_port, echo_reply.data))
     return ofmsgs
Esempio n. 3
0
 def _control_plane_icmp_handler(self, pkt_meta, ipv4_pkt, icmp_pkt):
     src_ip = ipaddress.IPv4Address(btos(ipv4_pkt.src))
     dst_ip = ipaddress.IPv4Address(btos(ipv4_pkt.dst))
     vlan = pkt_meta.vlan
     icmpv4_type = icmp_pkt.type
     ofmsgs = []
     if vlan.from_connected_to_vip(src_ip, dst_ip):
         if (icmpv4_type == icmp.ICMP_ECHO_REQUEST
                 and pkt_meta.eth_dst == self.faucet_mac):
             port = pkt_meta.port
             vid = self._vlan_vid(vlan, port)
             echo_reply = valve_packet.echo_reply(vid, self.faucet_mac,
                                                  pkt_meta.eth_src, dst_ip,
                                                  src_ip, icmp_pkt.data)
             ofmsgs.append(valve_of.packetout(port.number, echo_reply.data))
     return ofmsgs
Esempio n. 4
0
 def _control_plane_icmp_handler(self, pkt_meta, ipv4_pkt, icmp_pkt):
     src_ip = ipaddr.IPv4Address(ipv4_pkt.src)
     dst_ip = ipaddr.IPv4Address(ipv4_pkt.dst)
     vlan = pkt_meta.vlan
     icmpv4_type = icmp_pkt.type
     ofmsgs = []
     if vlan.from_connected_to_vip(src_ip, dst_ip):
         if (icmpv4_type == icmp.ICMP_ECHO_REQUEST and
                 pkt_meta.eth_dst == self.faucet_mac):
             in_port = pkt_meta.port.number
             vid = self._vlan_vid(vlan, in_port)
             echo_reply = valve_packet.echo_reply(
                 self.faucet_mac, pkt_meta.eth_src,
                 vid, dst_ip, src_ip, icmp_pkt.data)
             ofmsgs.append(
                 valve_of.packetout(in_port, echo_reply.data))
     return ofmsgs
Esempio n. 5
0
 def _control_plane_icmp_handler(self, pkt_meta, ipv4_pkt):
     ofmsgs = []
     src_ip = ipaddress.IPv4Address(btos(ipv4_pkt.src))
     dst_ip = ipaddress.IPv4Address(btos(ipv4_pkt.dst))
     vlan = pkt_meta.vlan
     if vlan.from_connected_to_vip(src_ip, dst_ip):
         if pkt_meta.eth_dst != vlan.faucet_mac:
             return ofmsgs
         if ipv4_pkt.proto != inet.IPPROTO_ICMP:
             return ofmsgs
         pkt_meta.reparse_all()
         icmp_pkt = pkt_meta.pkt.get_protocol(icmp.icmp)
         if icmp_pkt is None:
             return ofmsgs
         if icmp_pkt.type == icmp.ICMP_ECHO_REQUEST:
             port = pkt_meta.port
             vid = self._vlan_vid(vlan, port)
             echo_reply = valve_packet.echo_reply(vid, vlan.faucet_mac,
                                                  pkt_meta.eth_src, dst_ip,
                                                  src_ip, icmp_pkt.data)
             ofmsgs.append(valve_of.packetout(port.number, echo_reply.data))
     return ofmsgs