def build_syn_pkt(local_addr, peer_addr): pkt = testutils.simple_tcp_packet(pktlen=54, ip_src=local_addr, ip_dst=peer_addr, tcp_dport=BGP_PORT, tcp_flags="S") exp_packet = Mask(pkt) exp_packet.set_do_not_care_scapy(scapy.Ether, "dst") exp_packet.set_do_not_care_scapy(scapy.Ether, "src") exp_packet.set_do_not_care_scapy(scapy.IP, "version") exp_packet.set_do_not_care_scapy(scapy.IP, "ihl") exp_packet.set_do_not_care_scapy(scapy.IP, "tos") exp_packet.set_do_not_care_scapy(scapy.IP, "len") exp_packet.set_do_not_care_scapy(scapy.IP, "flags") exp_packet.set_do_not_care_scapy(scapy.IP, "id") exp_packet.set_do_not_care_scapy(scapy.IP, "frag") exp_packet.set_do_not_care_scapy(scapy.IP, "ttl") exp_packet.set_do_not_care_scapy(scapy.IP, "chksum") exp_packet.set_do_not_care_scapy(scapy.IP, "options") exp_packet.set_do_not_care_scapy(scapy.TCP, "sport") exp_packet.set_do_not_care_scapy(scapy.TCP, "seq") exp_packet.set_do_not_care_scapy(scapy.TCP, "ack") exp_packet.set_do_not_care_scapy(scapy.TCP, "reserved") exp_packet.set_do_not_care_scapy(scapy.TCP, "dataofs") exp_packet.set_do_not_care_scapy(scapy.TCP, "window") exp_packet.set_do_not_care_scapy(scapy.TCP, "chksum") exp_packet.set_do_not_care_scapy(scapy.TCP, "urgptr") exp_packet.set_ignore_extra_bytes() return exp_packet
def generate_expected_packet(self, inner_pkt): """ Generate ip_in_ip packet for verifying. """ inner_pkt = inner_pkt.copy() inner_pkt.ttl = inner_pkt.ttl - 1 pkt = scapy.Ether(dst=self.active_tor_mac, src=self.standby_tor_mac) / \ scapy.IP(src=self.standby_tor_ip, dst=self.active_tor_ip) / inner_pkt[IP] exp_pkt = Mask(pkt) exp_pkt.set_do_not_care_scapy(scapy.Ether, 'dst') exp_pkt.set_do_not_care_scapy(scapy.IP, "ihl") exp_pkt.set_do_not_care_scapy(scapy.IP, "tos") exp_pkt.set_do_not_care_scapy(scapy.IP, "len") exp_pkt.set_do_not_care_scapy(scapy.IP, "id") exp_pkt.set_do_not_care_scapy(scapy.IP, "flags") exp_pkt.set_do_not_care_scapy(scapy.IP, "frag") exp_pkt.set_do_not_care_scapy(scapy.IP, "ttl") exp_pkt.set_do_not_care_scapy(scapy.IP, "proto") exp_pkt.set_do_not_care_scapy(scapy.IP, "chksum") exp_pkt.set_do_not_care_scapy(scapy.TCP, "sport") exp_pkt.set_do_not_care_scapy(scapy.TCP, "seq") exp_pkt.set_do_not_care_scapy(scapy.TCP, "ack") exp_pkt.set_do_not_care_scapy(scapy.TCP, "reserved") exp_pkt.set_do_not_care_scapy(scapy.TCP, "dataofs") exp_pkt.set_do_not_care_scapy(scapy.TCP, "window") exp_pkt.set_do_not_care_scapy(scapy.TCP, "chksum") exp_pkt.set_do_not_care_scapy(scapy.TCP, "urgptr") exp_pkt.set_ignore_extra_bytes() return exp_pkt
def generatePkts(self, gw, port_ip, port_mac, vlan_id): pkt = testutils.simple_arp_packet(ip_snd=port_ip, ip_tgt=gw, eth_src=port_mac, hw_snd=port_mac, vlan_vid=vlan_id) exp_pkt = testutils.simple_arp_packet(ip_snd=gw, ip_tgt=port_ip, eth_src=self.dut_mac, eth_dst=port_mac, hw_snd=self.dut_mac, hw_tgt=port_mac, arp_op=2, vlan_vid=vlan_id) masked_exp_pkt = Mask(exp_pkt) # Ignore the Ethernet padding zeros masked_exp_pkt.set_ignore_extra_bytes() return pkt, masked_exp_pkt
def generate_unexpected_packet(self, inner_pkt): """ Generate a packet that shouldn't be observed. All packet should be forward via tunnel, so no packet should be observed on server port """ pkt = inner_pkt.copy() pkt[Ether].src = self.vlan_mac # TTL of packets from active tor to server is decreased by 1 pkt[IP].ttl -= 1 unexpected_packet = Mask(pkt) # Ignore dst mac unexpected_packet.set_do_not_care_scapy(scapy.Ether, 'dst') # Ignore check sum unexpected_packet.set_do_not_care_scapy(scapy.IP, "chksum") #Ignore extra bytes unexpected_packet.set_ignore_extra_bytes() return unexpected_packet