class Test163b: def __init__(self, config, app): self.__app = app self.__queue_wan = Queue() self.__queue_lan = Queue() self.__config = config self.__interface = None self.__pkt = None self.__local_addr_ceRouter = None self.__sendmsgs = SendMsgs(self.__config) self.__config_setup1_1 = ConfigSetup1_1(self.__config) self.__wan_device_tr1 = self.__config.get('wan', 'device_wan_tr1') self.__wan_mac_tr1 = self.__config.get('wan', 'wan_mac_tr1') self.__link_local_addr = self.__config.get('wan', 'link_local_addr') self.__all_nodes_addr = self.__config.get('multicast', 'all_nodes_addr') self.__test_desc = self.__config.get('tests', '1.6.3b') self.msg = self.__config.get('tests', '1.6.3b') self.msg_lan = self.__config.get('tests', '1.6.3b') self.addr_ceRouter = None def set_flags(self): self.__config_setup1_1.set_flag_M(self.__config.get( 't1.6.3', 'flag_m')) self.__config_setup1_1.set_flag_0(self.__config.get( 't1.6.3', 'flag_o')) self.__config_setup1_1.set_flag_chlim( self.__config.get('t1.6.3', 'flag_chlim')) self.__config_setup1_1.set_flag_L(self.__config.get( 't1.6.3', 'flag_l')) self.__config_setup1_1.set_flag_A(self.__config.get( 't1.6.3', 'flag_a')) self.__config_setup1_1.set_flag_R(self.__config.get( 't1.6.3', 'flag_r')) self.__config_setup1_1.set_flag_prf( self.__config.get('t1.6.3', 'flag_prf')) self.__config_setup1_1.set_validlifetime( self.__config.get('t1.6.3', 'validlifetime')) self.__config_setup1_1.set_preferredlifetime( self.__config.get('t1.6.3', 'preferredlifetime')) self.__config_setup1_1.set_routerlifetime( self.__config.get('t1.6.3', 'routerlifetime')) self.__config_setup1_1.set_intervalo( self.__config.get('t1.6.3', 'intervalo')) self.__config_setup1_1.set_pd_prefixlen( self.__config.get('t1.6.3', 'pd_prefixlen')) self.__config_setup1_1.set_prefix_addr( self.__config.get('setup1-1_advertise', 'ia_pd_address')) self.__config_setup1_1.set_dhcp_t1( self.__config.get('t1.6.3', 'dhcp_t1')) self.__config_setup1_1.set_dhcp_t2( self.__config.get('t1.6.3', 'dhcp_t2')) self.__config_setup1_1.set_dhcp_preflft( self.__config.get('t1.6.3', 'dhcp_preflft')) self.__config_setup1_1.set_dhcp_validlft( self.__config.get('t1.6.3', 'dhcp_validlft')) self.__config_setup1_1.set_dhcp_plen( self.__config.get('t1.6.3', 'dhcp_plen')) def get_addr_ceRouter(self): return self.addr_ceRouter def get_mac_ceRouter(self): return self.mac_ceRouter def set_status_lan(self, v): self.msg_lan = v def get_status_lan(self): return self.msg_lan def set_status(self, v): self.msg = v def get_status(self): return self.msg def run(self): @self.__app.route("/LAN", methods=['GET']) def envia_lan(): return self.get_status_lan() @self.__app.route("/WAN", methods=['GET']) def enviawan(): return self.get_status() self.__packet_sniffer_wan = PacketSniffer('test163b', self.__queue_wan, self, self.__config, self.__wan_device_tr1) self.__packet_sniffer_wan.start() self.set_flags() logging.info(self.__test_desc) t_test = 0 sent_reconfigure = False time_over = False t_test1 = 0 t_test2 = 0 cache_wan = [] while not self.__queue_wan.full(): while self.__queue_wan.empty(): if sent_reconfigure: if t_test2 < 3: time.sleep(1) t_test2 = t_test2 + 1 else: time_over = True if t_test < 120: time.sleep(1) t_test = t_test + 1 if t_test % 20 == 0: logging.info( 'WAN: Tempo limite de teste 120 seg. Tempo atual: ' + str(t_test)) self.set_status( 'WAN: Tempo limite de teste 120 seg. Tempo atual: ' + str(t_test)) else: self.__packet_sniffer_wan.stop() logging.info('Reprovado: Teste 1.6.3b- TImeout') self.set_status('Reprovado: Teste 1.6.3b TImeout') time.sleep(2) self.set_status( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status return False pkt = self.__queue_wan.get() cache_wan.append(pkt) wrpcap("wan-1.6.3b.cap", cache_wan) if not self.__config_setup1_1.get_setup1_1_OK(): logging.info('WAN: Setup 1.1 em execução') self.set_status('WAN: Setup 1.1 em execução') if not self.__config_setup1_1.get_disapproved(): self.__config_setup1_1.run_setup1_1(pkt) else: logging.info( 'WAN: Reprovado Teste 1.6.3b - Falha em completar o setup 1.1' ) self.set_status( 'Reprovado Teste 1.6.3b - Falha em completar o setup 1.1' ) time.sleep(2) self.set_status( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_wan.stop() return False #self.__config_setup1_1.run_setup1_1(pkt) else: # self.__config_setup1_1.set_xid() if pkt.haslayer(DHCP6_Renew): logging.info(pkt.show()) self.__packet_sniffer_wan.stop() logging.info( 'Aprovado: Teste 1.6.3.b. recebeu DHCP Renew apos DHCP Reconfigure' ) self.set_status( 'Aprovado: Teste 1.6.3.b. recebeu DHCP Renew apos DHCP Reconfigure' ) time.sleep(2) self.set_status( 'APROVADO' ) # Mensagem padrão para o frontEnd atualizar Status return True elif time_over: if not sent_reconfigure: self.__packet_sniffer_wan.stop() logging.info( 'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Enviou DHCP Reconfigure' ) self.set_status( 'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Enviou DHCP Reconfigure' ) time.sleep(2) self.set_status( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status return False else: self.__packet_sniffer_wan.stop() logging.info( 'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Recebeu Renew' ) self.set_status( 'Falha: Teste 1.6.3.b. Tempo finalizado mas Não Recebeu Renew' ) time.sleep(2) self.set_status( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status return False if not sent_reconfigure: time.sleep(3) logging.info('WAN: Envio de DHCP6 reconfigure') self.set_status('WAN: - Envio de DHCP6 reconfigure') self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst( self.__config_setup1_1.get_local_addr_ceRouter()) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst( self.__config_setup1_1.get_mac_ceRouter()) self.__config_setup1_1.set_dhcp_reconf_type( self.__config.get('t1.6.3', 'msg_type')) self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure( self.__config_setup1_1) sent_reconfigure = True self.__packet_sniffer_wan.stop() return False
class Test275d: def __init__(self, config): self.__queue_wan = Queue() self.__queue_lan = Queue() self.__config = config self.__interface = None self.__pkt = None self.__local_addr_ceRouter = None self.__sendmsgs = SendMsgs(self.__config) self.__config_setup1_1 = ConfigSetup1_1(self.__config) #self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config) self.__wan_device_tr1 = self.__config.get('wan', 'device_wan_tr1') self.__lan_device = self.__config.get('lan', 'lan_device') self.__wan_mac_tr1 = self.__config.get('wan', 'wan_mac_tr1') self.__link_local_addr = self.__config.get('wan', 'link_local_addr') self.__all_nodes_addr = self.__config.get('multicast', 'all_nodes_addr') self.__test_desc = self.__config.get('tests', '2.7.5d') self.__t_lan = None self.__finish_wan = False self.__dhcp_renew_done = False self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config, self.__lan_device) def set_flags(self): self.__config_setup1_1.set_flag_M( self.__config.get('t1.6.6b', 'flag_m')) self.__config_setup1_1.set_flag_0( self.__config.get('t1.6.6b', 'flag_o')) self.__config_setup1_1.set_flag_chlim( self.__config.get('t1.6.6b', 'flag_chlim')) self.__config_setup1_1.set_flag_L( self.__config.get('t1.6.6b', 'flag_l')) self.__config_setup1_1.set_flag_A( self.__config.get('t1.6.6b', 'flag_a')) self.__config_setup1_1.set_flag_R( self.__config.get('t1.6.6b', 'flag_r')) self.__config_setup1_1.set_flag_prf( self.__config.get('t1.6.6b', 'flag_prf')) self.__config_setup1_1.set_validlifetime( self.__config.get('t2.7.5d', 'validlifetime')) self.__config_setup1_1.set_preferredlifetime( self.__config.get('t2.7.5d', 'preferredlifetime')) self.__config_setup1_1.set_routerlifetime( self.__config.get('t2.7.5d', 'routerlifetime')) self.__config_setup1_1.set_intervalo( self.__config.get('t1.6.6b', 'intervalo')) self.__config_setup1_1.set_prefix_addr( self.__config.get('setup1-1_advertise', 'ia_pd_address')) self.__config_setup1_1.set_dhcp_t1( self.__config.get('t2.7.5d', 'dhcp_t1')) self.__config_setup1_1.set_dhcp_t2( self.__config.get('t2.7.5d', 'dhcp_t2')) self.__config_setup1_1.set_dhcp_preflft( self.__config.get('t2.7.5d', 'dhcp_preflft')) self.__config_setup1_1.set_dhcp_validlft( self.__config.get('t2.7.5d', 'dhcp_validlft')) self.__config_setup1_1.set_dhcp_plen( self.__config.get('t2.7.5d', 'dhcp_plen')) def set_flags_lan(self): self.__config_setup_lan.set_elapsetime( self.__config.get('solicitlan', 'elapsetime')) self.__config_setup_lan.set_xid(self.__config.get('solicitlan', 'xid')) self.__config_setup_lan.set_fdqn( self.__config.get('solicitlan', 'clientfqdn')) self.__config_setup_lan.set_vendor_class( self.__config.get('solicitlan', 'vendorclass')) self.__config_setup_lan.set_enterprise( self.__config.get('solicitlan', 'enterpriseid')) self.__config_setup_lan.set_client_duid( self.__config.get('solicitlan', 'duid')) self.__config_setup_lan.set_iaid( self.__config.get('solicitlan', 'iaid')) def run_Lan(self): #self.__config_setup_lan_.flags_partA() logging.info('Thread da LAN inicio') t_test = 0 t_test1 = 0 sent_reconfigure = False time_over = False send_ra = False self.set_flags_lan() self.__config_setup_lan.set_setup_lan_start() while not self.__queue_lan.full(): while self.__queue_lan.empty(): logging.info('Thread da LAN time') time.sleep(1) if self.__config_setup1_1.get_setup1_1_OK(): logging.info('Thread da WAN DONE') # t_test = t_test + 1 # if self.__config_setup1_1.get_recvd_dhcp_renew(): #pkt = self.__queue_lan.get() if t_test < 65: time.sleep(1) t_test = t_test + 1 if t_test % 5 == 0: #self.__config_setup_lan.set_setup_lan_start() self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'lan_local_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config.get('multicast', 'all_mac_routers')) self.__config_setup_lan.set_ipv6_dst( self.__config.get('general', 'all_routers_address')) self.__config_setup_lan.set_lla( self.__config.get('lan', 'mac_address')) self.__sendmsgs.send_icmp_rs( self.__config_setup_lan) if self.__config_setup_lan.get_ND_global_OK( ) and not self.__config_setup_lan.get_global_ping_OK( ): mac_global = self.__config_setup_lan.get_global_mac_ceRouter( ) ip_global = self.__config_setup_lan.get_global_addr_ceRouter( ) self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'global_wan_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( mac_global) self.__config_setup_lan.set_ipv6_dst(ip_global) self.__sendmsgs.send_echo_request_lan( self.__config_setup_lan) #self.__config_setup_lan.set_setup_lan_start() self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'lan_local_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config.get('multicast', 'all_mac_routers')) self.__config_setup_lan.set_ipv6_dst( self.__config.get('multicast', 'all_routers_addr')) self.__config_setup_lan.set_xid( self.__config.get('informationlan', 'xid')) #self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_elapsetime( self.__config.get('informationlan', 'elapsetime')) self.__config_setup_lan.set_vendor_class( self.__config.get('informationlan', 'vendorclass')) self.__sendmsgs.send_dhcp_information( self.__config_setup_lan) time_over = True pkt = self.__queue_lan.get() if not self.__config_setup_lan.get_global_ping_OK(): if not self.__config_setup_lan.get_disapproved(): self.__config_setup_lan.run_setup1_1(pkt) else: logging.info( 'Reprovado Teste 2.7.5d - Falha em completar o Common Setup 1.1 da RFC' ) self.__packet_sniffer_lan.stop() self.__finish_wan = True return False else: if self.__dhcp_renew_done: print('DONE CONCLUIDO- VALIDANDO MENSAGEM RA') if t_test1 < 60: print('DONE CONCLUIDO- VALIDANDO MENSAGEM RA TEMPO') time.sleep(1) t_test1 = t_test1 + 1 #if t_test1 % 10 == 0: #self.__config_setup_lan.set_setup_lan_start() self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'lan_local_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config.get('multicast', 'all_mac_routers')) self.__config_setup_lan.set_ipv6_dst( self.__config.get('general', 'all_routers_address')) self.__config_setup_lan.set_lla( self.__config.get('lan', 'mac_address')) self.__sendmsgs.send_icmp_rs(self.__config_setup_lan) if pkt.haslayer(ICMPv6ND_RA): print( 'DONE CONCLUIDO- VALIDANDO MENSAGEM MENSAGEM RA' ) if pkt.haslayer(ICMPv6NDOptRouteInfo): if pkt[ICMPv6NDOptRouteInfo].plen != 60: logging.info( ' Teste2.7.5d: Reprovado. Tamanho do prefixo diferente do anunciado no DHCP Reconfigure' ) logging.info( pkt[ICMPv6NDOptPrefixInfo].prefixlen) logging.info( pkt[ICMPv6NDOptRouteInfo].plen) self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True return False else: #self.__validlifetime_CeRouter == pkt[ICMPv6NDOptPrefixInfo].validlifetime logging.info( ' Teste 2.7.5d:Tamanho do prefixo igual ao anunciado na mensagem DHCP Reconfigure.' ) logging.info('Aprovado Teste2.7.5d.') self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = False return True else: print('DONE CONCLUIDO- SEM PREFIX INFO RA') # logging.info('Setup LAN Concluido') # if self.__config_setup_lan.get_recvd_dhcp_srcladdr(): # logging.info(' Teste 2.7.5d: Recebido Recursive DNS OK.') # logging.info('Aprovado Teste2.7.5d.') # self.__packet_sniffer_lan.stop() # self.__finish_wan = True # self.__fail_test = False # return True # else: # logging.info(' Teste2.7.5d: Reprovado. Não foi recebido') # #logging.info(routerlifetime) # self.__packet_sniffer_lan.stop() # self.__finish_wan = True # self.__fail_test = True # return False def run(self): self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread') self.__t_lan.start() self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN', self.__queue_wan, self, self.__config, self.__wan_device_tr1) self.__packet_sniffer_wan.start() self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN', self.__queue_lan, self, self.__config, self.__lan_device) test_lan = self.__packet_sniffer_lan.start() self.set_flags() logging.info(self.__test_desc) t_test = 0 sent_reconfigure = False time_over = False #time.sleep(11111) finish_wan = True self.__config_setup1_1.set_pd_prefixlen( self.__config.get('t2.7.5d', 'pd_prefixlen')) self.__config_setup1_1.set_routerlifetime( self.__config.get('t2.7.5d', 'routerlifetime')) #self.__config_setup1_1.active_DHCP_no_IA_PD() while not self.__queue_wan.full(): while self.__queue_wan.empty(): if t_test < 60: time.sleep(1) if t_test % 15 == 0: self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'ra_mac')) self.__config_setup1_1.set_ether_dst( self.__config.get('multicast', 'all_mac_nodes')) self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'ra_address')) self.__config_setup1_1.set_ipv6_dst( self.__config.get('multicast', 'all_nodes_addr')) self.__sendmsgs.send_tr1_RA(self.__config_setup1_1) t_test = t_test + 1 else: time_over = True pkt = self.__queue_wan.get() if not self.__config_setup1_1.get_setup1_1_OK(): if not self.__config_setup1_1.get_disapproved(): self.__config_setup1_1.run_setup1_1(pkt) else: logging.info( 'Reprovado Teste 2.7.3a - Falha em completar o Common Setup 1.1 da RFC' ) self.__packet_sniffer_wan.stop() return False else: if not self.__finish_wan: print('WAN - Concluido') print('LAN RESULT') if not sent_reconfigure: time.sleep(25) print('aqui7') self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) print('aqui8') self.__config_setup1_1.set_ipv6_dst( self.__config_setup1_1.get_local_addr_ceRouter()) print('aqui10') self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) print('aqui11') self.__config_setup1_1.set_ether_dst( self.__config_setup1_1.get_mac_ceRouter()) print('aqui12') self.__config_setup1_1.set_dhcp_reconf_type( self.__config.get('t1.6.3', 'msg_type')) print('aqui13') self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure( self.__config_setup1_1) print('aqui14') sent_reconfigure = True if pkt.haslayer(DHCP6_Renew): if not self.__dhcp_renew_done: # if self.__active_renew_dhcp: self.__config_setup1_1.set_mac_ceRouter( pkt[Ether].src) self.__config_setup1_1.set_local_addr_ceRouter( pkt[IPv6].src) self.__config_setup1_1.set_xid( pkt[DHCP6_Renew].trid) self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst( pkt[Ether].src) self.__config_setup1_1.set_dhcp_preflft('100') self.__config_setup1_1.set_dhcp_validlft('200') self.__config_setup1_1.set_dhcp_plen('60') self.__config_setup1_1.set_prefix_addr( self.__config.get('setup1-1_advertise', 'ia_pd_address')) self.__sendmsgs.send_dhcp_reply_v3( self.__config_setup1_1) #self.__dhcp_ok = True self.__dhcp_renew_done = True else: self.__packet_sniffer_wan.stop() if self.__fail_test: return False else: return True self.__packet_sniffer_wan.stop() return False
class Test273c: def __init__(self,config,app): self.__app = app self.__queue_wan = Queue() self.__queue_lan = Queue() self.__config = config self.__interface = None self.__pkt = None self.__local_addr_ceRouter =None self.__sendmsgs = SendMsgs(self.__config) self.__config_setup1_1 = ConfigSetup1_1(self.__config) #self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config) self.__wan_device_tr1 = self.__config.get('wan','device_wan_tr1') self.__lan_device = self.__config.get('lan','lan_device') self.__wan_mac_tr1 = self.__config.get('wan','wan_mac_tr1') self.__link_local_addr = self.__config.get('wan','link_local_addr') self.__all_nodes_addr = self.__config.get('multicast','all_nodes_addr') self.__test_desc = self.__config.get('tests','2.7.3c') self.__t_lan = None self.__finish_wan = False self.__fail_test = False self.msg = self.__config.get('tests','2.7.3c') self.msg_lan =self.__config.get('tests','2.7.3c') self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config,self.__lan_device) def set_flags(self): self.__config_setup1_1.set_flag_M(self.__config.get('t1.6.6b','flag_m')) self.__config_setup1_1.set_flag_0(self.__config.get('t1.6.6b','flag_o')) self.__config_setup1_1.set_flag_chlim(self.__config.get('t1.6.6b','flag_chlim')) self.__config_setup1_1.set_flag_L(self.__config.get('t1.6.6b','flag_l')) self.__config_setup1_1.set_flag_A(self.__config.get('t1.6.6b','flag_a')) self.__config_setup1_1.set_flag_R(self.__config.get('t1.6.6b','flag_r')) self.__config_setup1_1.set_flag_prf(self.__config.get('t1.6.6b','flag_prf')) self.__config_setup1_1.set_validlifetime(self.__config.get('t2.7.3c','validlifetime')) self.__config_setup1_1.set_preferredlifetime(self.__config.get('t2.7.3c','preferredlifetime')) self.__config_setup1_1.set_routerlifetime(self.__config.get('t2.7.3c','routerlifetime')) self.__config_setup1_1.set_intervalo(self.__config.get('t1.6.6b','intervalo')) self.__config_setup1_1.set_dhcp_t1(self.__config.get('t2.7.3c','dhcp_t1')) self.__config_setup1_1.set_dhcp_t2(self.__config.get('t2.7.3c','dhcp_t2')) self.__config_setup1_1.set_dhcp_preflft(self.__config.get('t2.7.3c','dhcp_preflft')) self.__config_setup1_1.set_dhcp_validlft(self.__config.get('t2.7.3c','dhcp_validlft')) self.__config_setup1_1.set_dhcp_plen(self.__config.get('t2.7.3c','dhcp_plen')) def set_flags_lan(self): self.__config_setup_lan.set_elapsetime(self.__config.get('solicitlan','elapsetime')) self.__config_setup_lan.set_xid(self.__config.get('solicitlan','xid')) self.__config_setup_lan.set_fdqn(self.__config.get('solicitlan','clientfqdn')) self.__config_setup_lan.set_vendor_class(self.__config.get('solicitlan','vendorclass')) self.__config_setup_lan.set_enterprise(self.__config.get('solicitlan','enterpriseid')) self.__config_setup_lan.set_client_duid(self.__config.get('solicitlan','duid')) self.__config_setup_lan.set_iaid(self.__config.get('solicitlan','iaid')) def set_status_lan(self,v): self.msg_lan = v def get_status_lan(self): return self.msg_lan def set_status(self,v): self.msg = v def get_status(self): return self.msg self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','lan_local_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(self.__config.get('multicast','all_mac_routers')) self.__config_setup_lan.set_ipv6_dst(self.__config.get('general','all_routers_address')) self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__sendmsgs.send_icmp_rs(self.__config_setup_lan) def echo_request_lan(self): #print('ENVIO REQUEST 1 LAN') mac_global = self.__config_setup_lan.get_global_mac_ceRouter() ip_global = self.__config_setup_lan.get_global_addr_ceRouter() self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','global_wan_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(mac_global) self.__config_setup_lan.set_ipv6_dst(ip_global) self.__sendmsgs.send_echo_request_lan(self.__config_setup_lan) def echo_request_lan_wrong_prefix(self): #print('ENVIO REQUEST 1 LAN') mac_global = self.__config_setup_lan.get_global_mac_ceRouter() ip_global = self.__config_setup_lan.get_global_addr_ceRouter() self.__config_setup_lan.set_ipv6_src(self.__config.get('t2.7.6','source_to_ping_tn1')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(mac_global) self.__config_setup_lan.set_ipv6_dst(self.__config.get('wan','global_wan_addr')) self.__sendmsgs.send_echo_request_lan(self.__config_setup_lan) def icmp_na_wrong_prefix(self): self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','global_wan_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(self.__config_setup_lan.get_global_mac_ceRouter()) self.__config_setup_lan.set_ipv6_dst(self.__config_setup_lan.get_global_addr_ceRouter()) self.__config_setup_lan.set_tgt(self.__config.get('t2.7.6','source_to_ping_tn1')) self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__sendmsgs.send_icmp_na_lan(self.__config_setup_lan) def dhcp_information_lan(self): #self.__config_setup_lan.set_setup_lan_start() #print('#print ENVIO INFORMATION LAN') self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','lan_local_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(self.__config.get('multicast','all_mac_routers')) self.__config_setup_lan.set_ipv6_dst(self.__config.get('multicast','all_routers_addr')) self.__config_setup_lan.set_xid(self.__config.get('informationlan','xid')) #self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_elapsetime(self.__config.get('informationlan','elapsetime')) self.__config_setup_lan.set_vendor_class(self.__config.get('informationlan','vendorclass')) self.__sendmsgs.send_dhcp_information(self.__config_setup_lan) def ra_wan(self): self.__config_setup1_1.set_ether_src(self.__config.get('wan','ra_mac')) self.__config_setup1_1.set_ether_dst(self.__config.get('multicast','all_mac_nodes')) self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','ra_address')) self.__config_setup1_1.set_ipv6_dst(self.__config.get('multicast','all_nodes_addr')) self.__sendmsgs.send_tr1_RA(self.__config_setup1_1) def dhcp_reconf(self): self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr')) self.__config_setup1_1.set_ipv6_dst(self.__config_setup1_1.get_local_addr_ceRouter()) self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac')) self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_mac_ceRouter()) self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t2.7.5d','msg_type')) self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1) def icmp_na_global_lan(self,pkt): self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','global_wan_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(pkt[Ether].src) self.__config_setup_lan.set_ipv6_dst(pkt[IPv6].src) self.__config_setup_lan.set_tgt(self.__config.get('lan','global_wan_addr')) self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_mac_ceRouter(pkt[Ether].src) self.__sendmsgs.send_icmp_na_lan(self.__config_setup_lan) def rs_lan(self): self.__config_setup_lan.set_ipv6_src(self.__config.get('lan','lan_local_addr')) self.__config_setup_lan.set_ether_src(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_ether_dst(self.__config.get('multicast','all_mac_routers')) self.__config_setup_lan.set_ipv6_dst(self.__config.get('general','all_routers_address')) self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__sendmsgs.send_icmp_rs(self.__config_setup_lan) def run_Lan(self): @self.__app.route("/LAN",methods=['GET']) def envia_lan(): return self.get_status_lan() #self.__config_setup_lan_.flags_partA() t_test = 0 sent_reconfigure = False time_over = False self.set_flags_lan() cache_lan = [] temporizador = 0 test_max_time_lan = 300 while not self.__queue_lan.full(): time.sleep(1) temporizador = temporizador + 1 while self.__queue_lan.empty(): time.sleep(1) if self.__config_setup1_1.get_setup1_1_OK(): if temporizador < test_max_time_lan: temporizador = temporizador + 1 else: self.set_status_lan('LAN: Reprovado. Timeout') time.sleep(2) self.set_status_lan('REPROVADO') logging.info('LAN: Reprovado. Timeout') #logging.info(routerlifetime) self.__finish_wan = True self.__fail_test = True self.__packet_sniffer_lan.stop() return False if temporizador % 20 == 0: logging.info('LAN: Tempo limite do teste: '+str(test_max_time_lan)+' segundos. Tempo: ' +str(temporizador)) self.set_status_lan('LAN: Tempo limite do teste: '+str(test_max_time_lan)+' segundos. Tempo: ' +str(temporizador)) if self.__config_setup1_1.get_recvd_dhcp_renew(): #pkt = self.__queue_lan.get() self.set_status_lan('LAN: Transmissão periódica de ICMP RS Apos o recebimento da mensagem DHCP Renew') logging.info('LAN: Transmissão periódica de ICMP RS Apos o recebimento da mensagem DHCP Renew') self.__config_setup_lan.set_setup_lan_start() self.rs_lan() pkt = self.__queue_lan.get() cache_lan.append(pkt) wrpcap("lan-2.7.3c.cap",cache_lan) if not self.__config_setup_lan.get_setup_OK(): if not self.__config_setup_lan.get_disapproved(): self.__config_setup_lan.run_setup1_1(pkt) else: logging.info('LAN: Reprovado Teste 2.7.4a - Falha em completar o setup 1.1') self.set_status_lan('Reprovado Teste 2.7.4a - Falha em completar o setup 1.1') time.sleep(2) self.set_status_lan('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True return False else: logging.info('Setup LAN concluido. Verificando o valor de routerlifetime ') self.set_status_lan('Setup LAN concluido. o valor de routerlifetime') routerlifetime = self.__config_setup_lan.get_routerlifetime_CeRouter() if routerlifetime == 0: logging.info(' APROVADO Teste 2.7.3c: routerlifetime OK. routerlifetime igual a 0') self.set_status_lan('APROVADO Teste 2.7.3c: routerlifetime OK. routerlifetime igual a 0') time.sleep(2) self.set_status_lan('APROVADO') # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = False return True else: logging.info(' REPROVADO Teste 2.7.3c: routerlifetime. routerlifetime acima de 0') self.set_status_lan('REPROVADO Teste 2.7.3c: routerlifetime. routerlifetime acima de 0') time.sleep(2) self.set_status_lan('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = False return True def run(self): @self.__app.route("/WAN",methods=['GET']) def enviawan(): return self.get_status() self.__t_lan = Thread(target=self.run_Lan,name='LAN_Thread') self.__t_lan.start() self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN',self.__queue_wan,self,self.__config,self.__wan_device_tr1) self.__packet_sniffer_wan.start() self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN',self.__queue_lan,self,self.__config,self.__lan_device) test_lan = self.__packet_sniffer_lan.start() cache_wan = [] self.set_flags() logging.info(self.__test_desc) t_test = 0 sent_reconfigure = False time_over = False #time.sleep(11111) self.__config_setup1_1.set_pd_prefixlen(self.__config.get('t2.7.3c','pd_prefixlen')) self.__config_setup1_1.set_routerlifetime(self.__config.get('t2.7.3c','routerlifetime')) test_max_time = 300 temporizador = 0 #self.__config_setup1_1.active_DHCP_no_IA_PD() while not self.__queue_wan.full(): while self.__queue_wan.empty(): time.sleep(1) if temporizador < test_max_time: temporizador = temporizador + 1 else: self.set_status('WAN: Reprovado. Timeout') time.sleep(2) self.set_status('REPROVADO') logging.info('WAN: Reprovado. Timeout') #logging.info(routerlifetime) self.__packet_sniffer_lan.stop() self.__packet_sniffer_wan.stop() return False if temporizador % 5 ==0: logging.info('WAN: Envio de RA periódico') self.set_status('WAN: Envio de RA periódico') self.ra_wan() pkt = self.__queue_wan.get() cache_wan.append(pkt) wrpcap("WAN-2.7.3c.cap",cache_wan) if not self.__config_setup1_1.get_setup1_1_OK(): logging.info('WAN: Setup 1.1 em execução') self.set_status('WAN: Setup 1.1 em execução') if not self.__config_setup1_1.get_disapproved(): self.__config_setup1_1.run_setup1_1(pkt) else: logging.info('WAN: Reprovado Teste 2.7.4a - Falha em completar o setup 1.1') self.set_status('WAN: Reprovado Teste 2.7.4a - Falha em completar o setup 1.1') time.sleep(2) self.set_status('REPROVADO') # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True else: logging.info('WAN: Checando o recebimento de Renew') self.set_status('WAN: Checando o recebimento de Renew') self.__config_setup1_1.check_layers(pkt) if self.__finish_wan: self.__packet_sniffer_wan.stop() if self.__fail_test: return False else: return True self.__packet_sniffer_wan.stop() return False
class Test163b: def __init__(self,config): self.__queue_wan = Queue() self.__queue_lan = Queue() self.__config = config self.__interface = None self.__pkt = None self.__local_addr_ceRouter =None self.__sendmsgs = SendMsgs(self.__config) self.__config_setup1_1 = ConfigSetup1_1(self.__config) self.__wan_device_tr1 = self.__config.get('wan','device_wan_tr1') self.__wan_mac_tr1 = self.__config.get('wan','wan_mac_tr1') self.__link_local_addr = self.__config.get('wan','link_local_addr') self.__all_nodes_addr = self.__config.get('multicast','all_nodes_addr') self.__test_desc = self.__config.get('tests','1.6.3b') def set_flags(self): self.__config_setup1_1.set_flag_M(self.__config.get('t1.6.3','flag_m')) self.__config_setup1_1.set_flag_0(self.__config.get('t1.6.3','flag_o')) self.__config_setup1_1.set_flag_chlim(self.__config.get('t1.6.3','flag_chlim')) self.__config_setup1_1.set_flag_L(self.__config.get('t1.6.3','flag_l')) self.__config_setup1_1.set_flag_A(self.__config.get('t1.6.3','flag_a')) self.__config_setup1_1.set_flag_R(self.__config.get('t1.6.3','flag_r')) self.__config_setup1_1.set_flag_prf(self.__config.get('t1.6.3','flag_prf')) self.__config_setup1_1.set_validlifetime(self.__config.get('t1.6.3','validlifetime')) self.__config_setup1_1.set_preferredlifetime(self.__config.get('t1.6.3','preferredlifetime')) self.__config_setup1_1.set_routerlifetime(self.__config.get('t1.6.3','routerlifetime')) self.__config_setup1_1.set_intervalo(self.__config.get('t1.6.3','intervalo')) def run(self): self.__packet_sniffer_wan = PacketSniffer('test163b',self.__queue_wan,self,self.__config,self.__wan_device_tr1) self.__config_setup1_1.flags_partA() self.__packet_sniffer_wan.start() self.set_flags() logging.info(self.__test_desc) t_test = 0 sent_reconfigure = False time_over = False while not self.__queue_wan.full(): while self.__queue_wan.empty(): if t_test < 3000: time.sleep(1) t_test = t_test + 1 else: time_over = True pkt = self.__queue_wan.get() if not self.__config_setup1_1.get_setup1_1_OK(): if not self.__config_setup1_1.get_disapproved(): self.__config_setup1_1.run_setup1_1(pkt) print('aqui') else: print('aqui1') self.__packet_sniffer_wan.stop() logging.info('Reprovado Teste 1.6.3.c - Falha em completar o Common Setup 1.1 da RFC') return False #self.__config_setup1_1.run_setup1_1(pkt) else: # self.__config_setup1_1.set_xid() if pkt.haslayer(DHCP6_Renew): print('aqui2') logging.info(pkt.show()) print('aqui3') self.__packet_sniffer_wan.stop() print('aqui33333') logging.info('Aprovado: Teste 1.6.3.b.') return True elif time_over : print('aqui4') if not sent_reconfigure: print('aqui5') pass #self.__packet_sniffer_wan.stop() logging.info('Falha: Teste 1.6.3.b. Tempo finalizado e Não Enviou DHCP Reconfigure') return False else: print('aqui6') self.__packet_sniffer_wan.stop() logging.info('Reprovado: Teste 1.6.3.b. Tempo finalizado e Não recebeu DHCP6 Renew') return False if not sent_reconfigure: time.sleep(3) print('aqui7') self.__config_setup1_1.set_ipv6_src(self.__config.get('wan','link_local_addr')) print('aqui8') self.__config_setup1_1.set_ipv6_dst(self.__config_setup1_1.get_local_addr_ceRouter()) print('aqui10') self.__config_setup1_1.set_ether_src(self.__config.get('wan','link_local_mac')) print('aqui11') self.__config_setup1_1.set_ether_dst(self.__config_setup1_1.get_mac_ceRouter()) print('aqui12') self.__config_setup1_1.set_dhcp_reconf_type(self.__config.get('t1.6.3','msg_type')) print('aqui13') self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1) print('aqui14') sent_reconfigure = True # if pkt.haslayer(DHCP6_Solicit): # self.__packet_sniffer_wan.stop() # while not self.__queue_wan.empty(): # pkt = self.__queue_wan.get() # return True # while not pkt.haslayer(IPv6): # pkt = self.__queue_wan.get() self.__packet_sniffer_wan.stop() return False
class Test275c: def __init__(self, config, app): self.__app = app self.__queue_wan = Queue() self.__queue_lan = Queue() self.__config = config self.__interface = None self.__pkt = None self.__local_addr_ceRouter = None self.__sendmsgs = SendMsgs(self.__config) self.__config_setup1_1 = ConfigSetup1_1(self.__config) #self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config) self.__wan_device_tr1 = self.__config.get('wan', 'device_wan_tr1') self.__lan_device = self.__config.get('lan', 'lan_device') self.__wan_mac_tr1 = self.__config.get('wan', 'wan_mac_tr1') self.__link_local_addr = self.__config.get('wan', 'link_local_addr') self.__all_nodes_addr = self.__config.get('multicast', 'all_nodes_addr') self.__test_desc = self.__config.get('tests', '2.7.5c') self.__t_lan = None self.__finish_wan = False self.__fail_test = False self.__dhcp_renew_done = False self.msg = self.__config.get('tests', '2.7.5c') self.msg_lan = self.__config.get('tests', '2.7.5c') self.__config_setup_lan = ConfigSetup1_1_Lan(self.__config, self.__lan_device) def set_flags(self): self.__config_setup1_1.set_flag_M( self.__config.get('t1.6.6b', 'flag_m')) self.__config_setup1_1.set_flag_0( self.__config.get('t1.6.6b', 'flag_o')) self.__config_setup1_1.set_flag_chlim( self.__config.get('t1.6.6b', 'flag_chlim')) self.__config_setup1_1.set_flag_L( self.__config.get('t1.6.6b', 'flag_l')) self.__config_setup1_1.set_flag_A( self.__config.get('t1.6.6b', 'flag_a')) self.__config_setup1_1.set_flag_R( self.__config.get('t1.6.6b', 'flag_r')) self.__config_setup1_1.set_flag_prf( self.__config.get('t1.6.6b', 'flag_prf')) self.__config_setup1_1.set_validlifetime( self.__config.get('t2.7.5c', 'validlifetime')) self.__config_setup1_1.set_preferredlifetime( self.__config.get('t2.7.5c', 'preferredlifetime')) self.__config_setup1_1.set_routerlifetime( self.__config.get('t2.7.5c', 'routerlifetime')) self.__config_setup1_1.set_intervalo( self.__config.get('t1.6.6b', 'intervalo')) self.__config_setup1_1.set_prefix_addr( self.__config.get('setup1-1_advertise', 'ia_pd_address')) self.__config_setup1_1.set_dhcp_t1( self.__config.get('t2.7.5c', 'dhcp_t1')) self.__config_setup1_1.set_dhcp_t2( self.__config.get('t2.7.5c', 'dhcp_t2')) self.__config_setup1_1.set_dhcp_preflft( self.__config.get('t2.7.5c', 'dhcp_preflft')) self.__config_setup1_1.set_dhcp_validlft( self.__config.get('t2.7.5c', 'dhcp_validlft')) self.__config_setup1_1.set_dhcp_plen( self.__config.get('t2.7.5c', 'dhcp_plen')) def set_flags_lan(self): self.__config_setup_lan.set_elapsetime( self.__config.get('solicitlan', 'elapsetime')) self.__config_setup_lan.set_xid(self.__config.get('solicitlan', 'xid')) self.__config_setup_lan.set_fdqn( self.__config.get('solicitlan', 'clientfqdn')) self.__config_setup_lan.set_vendor_class( self.__config.get('solicitlan', 'vendorclass')) self.__config_setup_lan.set_enterprise( self.__config.get('solicitlan', 'enterpriseid')) self.__config_setup_lan.set_client_duid( self.__config.get('solicitlan', 'duid')) self.__config_setup_lan.set_iaid( self.__config.get('solicitlan', 'iaid')) def set_status_lan(self, v): self.msg_lan = v def get_status_lan(self): return self.msg_lan def set_status(self, v): self.msg = v def get_status(self): return self.msg def rs_lan(self): self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'lan_local_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config.get('multicast', 'all_mac_routers')) self.__config_setup_lan.set_ipv6_dst( self.__config.get('general', 'all_routers_address')) self.__config_setup_lan.set_lla(self.__config.get( 'lan', 'mac_address')) self.__sendmsgs.send_icmp_rs(self.__config_setup_lan) def echo_request_lan(self): #print('ENVIO REQUEST 1 LAN') mac_global = self.__config_setup_lan.get_global_mac_ceRouter() ip_global = self.__config_setup_lan.get_global_addr_ceRouter() self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'global_wan_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst(mac_global) self.__config_setup_lan.set_ipv6_dst(ip_global) self.__sendmsgs.send_echo_request_lan(self.__config_setup_lan) def echo_request_lan_wrong_prefix(self): #print('ENVIO REQUEST 1 LAN') mac_global = self.__config_setup_lan.get_global_mac_ceRouter() ip_global = self.__config_setup_lan.get_global_addr_ceRouter() self.__config_setup_lan.set_ipv6_src( self.__config.get('t2.7.6', 'source_to_ping_tn1')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst(mac_global) self.__config_setup_lan.set_ipv6_dst( self.__config.get('wan', 'global_wan_addr')) self.__sendmsgs.send_echo_request_lan(self.__config_setup_lan) def icmp_na_wrong_prefix(self): self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'global_wan_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config_setup_lan.get_global_mac_ceRouter()) self.__config_setup_lan.set_ipv6_dst( self.__config_setup_lan.get_global_addr_ceRouter()) self.__config_setup_lan.set_tgt( self.__config.get('t2.7.6', 'source_to_ping_tn1')) self.__config_setup_lan.set_lla(self.__config.get( 'lan', 'mac_address')) self.__sendmsgs.send_icmp_na_lan(self.__config_setup_lan) def dhcp_information_lan(self): #self.__config_setup_lan.set_setup_lan_start() #print('#print ENVIO INFORMATION LAN') self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'lan_local_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst( self.__config.get('multicast', 'all_mac_routers')) self.__config_setup_lan.set_ipv6_dst( self.__config.get('multicast', 'all_routers_addr')) self.__config_setup_lan.set_xid( self.__config.get('informationlan', 'xid')) #self.__config_setup_lan.set_lla(self.__config.get('lan','mac_address')) self.__config_setup_lan.set_elapsetime( self.__config.get('informationlan', 'elapsetime')) self.__config_setup_lan.set_vendor_class( self.__config.get('informationlan', 'vendorclass')) self.__sendmsgs.send_dhcp_information(self.__config_setup_lan) def ra_wan(self): self.__config_setup1_1.set_ether_src(self.__config.get( 'wan', 'ra_mac')) self.__config_setup1_1.set_ether_dst( self.__config.get('multicast', 'all_mac_nodes')) self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'ra_address')) self.__config_setup1_1.set_ipv6_dst( self.__config.get('multicast', 'all_nodes_addr')) self.__sendmsgs.send_tr1_RA(self.__config_setup1_1) def dhcp_reconf(self): self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst( self.__config_setup1_1.get_local_addr_ceRouter()) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst( self.__config_setup1_1.get_mac_ceRouter()) self.__config_setup1_1.set_dhcp_reconf_type( self.__config.get('t2.7.5d', 'msg_type')) self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1) def dhcp_reply(self, pkt): self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src) self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src) self.__config_setup1_1.set_xid(pkt[DHCP6_Renew].trid) self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst(pkt[Ether].src) self.__config_setup1_1.set_dhcp_preflft('100') self.__config_setup1_1.set_dhcp_validlft('200') self.__config_setup1_1.set_dhcp_plen('60') self.__config_setup1_1.set_prefix_addr( self.__config.get('setup1-1_advertise', 'ia_pd_address')) self.__sendmsgs.send_dhcp_reply_v3(self.__config_setup1_1) def icmp_na_global_lan(self, pkt): self.__config_setup_lan.set_ipv6_src( self.__config.get('lan', 'global_wan_addr')) self.__config_setup_lan.set_ether_src( self.__config.get('lan', 'mac_address')) self.__config_setup_lan.set_ether_dst(pkt[Ether].src) self.__config_setup_lan.set_ipv6_dst(pkt[IPv6].src) self.__config_setup_lan.set_tgt( self.__config.get('lan', 'global_wan_addr')) self.__config_setup_lan.set_lla(self.__config.get( 'lan', 'mac_address')) self.__config_setup_lan.set_mac_ceRouter(pkt[Ether].src) self.__sendmsgs.send_icmp_na_lan(self.__config_setup_lan) def run_Lan(self): @self.__app.route("/LAN", methods=['GET']) def envia_lan(): return self.get_status_lan() #self.__config_setup_lan_.flags_partA() logging.info('Thread da LAN inicio') t_test = 0 t_test1 = 0 sent_reconfigure = False time_over = False send_ra = False self.set_flags_lan() self.__config_setup_lan.set_setup_lan_start() cache_lan = [] temporizador = 0 test_max_time_lan = 300 rs_sent = False while not self.__queue_lan.full(): time.sleep(1) temporizador = temporizador + 1 while self.__queue_lan.empty(): time.sleep(1) if self.__config_setup1_1.get_setup1_1_OK(): if temporizador < test_max_time_lan: temporizador = temporizador + 1 else: self.set_status_lan('LAN: Reprovado. Timeout') time.sleep(2) self.set_status_lan('REPROVADO') logging.info('LAN: Reprovado. Timeout') #logging.info(routerlifetime) self.__finish_wan = True self.__fail_test = True self.__packet_sniffer_lan.stop() return False if temporizador % 20 == 0: logging.info('LAN: Tempo limite do teste: ' + str(test_max_time_lan) + ' segundos. Tempo: ' + str(temporizador)) self.set_status_lan('LAN: Tempo limite do teste: ' + str(test_max_time_lan) + ' segundos. Tempo: ' + str(temporizador)) if temporizador % 8 == 0: self.set_status_lan( 'LAN: Transmissão periódica de ICMP RS e DHCP information' ) logging.info( 'LAN: Transmissão periódica de ICMP RS e DHCP information' ) self.rs_lan() #self.dhcp_information_lan() if temporizador % 5 == 0: if self.__config_setup_lan.get_ND_global_OK( ) and not self.__config_setup_lan.get_global_ping_OK(): self.set_status_lan( 'LAN: Transmissão Echo Request IP global do roteador' ) logging.info( 'LAN: Transmissão Echo Request IP global do roteador' ) self.echo_request_lan() pkt = self.__queue_lan.get() cache_lan.append(pkt) wrpcap("lan-2.7.5c.cap", cache_lan) if not self.__config_setup_lan.get_global_ping_OK(): if not self.__config_setup_lan.get_disapproved(): self.__config_setup_lan.run_setup1_1(pkt) else: logging.info( 'LAN: Reprovado Teste 2.7.5c - Falha em completar o setup 1.1' ) self.set_status_lan( 'Reprovado Teste 2.7.5c - Falha em completar o setup 1.1' ) time.sleep(2) self.set_status_lan( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True return False else: if self.__dhcp_renew_done: logging.info('LAN: DHCP Renew concluido') self.set_status_lan('LAN: DHCP Renew concluido') if temporizador < test_max_time_lan: #if t_test1 % 10 == 0: #self.__config_setup_lan.set_setup_lan_start() self.set_status_lan( 'LAN: DHCP Renew concluido. Enviando RS') logging.info('LAN: DHCP Renew concluido. Enviado RS') if temporizador % 10 == 0: while not self.__queue_lan.empty(): self.__queue_lan.get() self.rs_lan() rs_sent = True if rs_sent: if pkt.haslayer(ICMPv6ND_RA): if pkt.haslayer(ICMPv6NDOptPrefixInfo): if pkt[ICMPv6NDOptPrefixInfo].prefix != self.__config.get( 'setup1-1_advertise', 'ia_pd_address2'): logging.info( ' Teste2.7.5c: Reprovado. Não Recebeu o Prefixo atualizado' ) logging.info( pkt[ICMPv6NDOptPrefixInfo].prefix) self.set_status_lan( ' Teste2.7.5c: Reprovado. Não Recebeu o Prefixo atualizado' ) time.sleep(2) self.set_status_lan( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True return False else: #self.__validlifetime_CeRouter == pkt[ICMPv6NDOptPrefixInfo].validlifetime logging.info( ' APROVADO Teste 2.7.5c: Recebeu o Prefixo atualizado.' ) self.set_status( ' APROVADO Teste 2.7.5c: Recebeu o Prefixo atualizado.' ) time.sleep(2) self.set_status( 'APROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = False return True else: logging.info( ' Teste2.7.5c: Reprovado. Não Recebeu o Prefixo' ) logging.info( pkt[ICMPv6NDOptPrefixInfo].prefix) self.set_status_lan( 'Teste2.7.5c: Reprovado. Não Recebeu o Prefixo' ) time.sleep(2) self.set_status_lan( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True def dhcp_reconfigure(self): self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst( self.__config_setup1_1.get_local_addr_ceRouter()) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst( self.__config_setup1_1.get_mac_ceRouter()) self.__config_setup1_1.set_dhcp_reconf_type( self.__config.get('t1.6.3', 'msg_type')) self.__config_setup1_1.set_udp_sport('547') self.__config_setup1_1.set_udp_dport('546') self.__sendmsgs.send_dhcp_reconfigure(self.__config_setup1_1) def dhcp_renew(self, pkt): # if self.__active_renew_dhcp: self.__config_setup1_1.set_mac_ceRouter(pkt[Ether].src) self.__config_setup1_1.set_local_addr_ceRouter(pkt[IPv6].src) self.__config_setup1_1.set_xid(pkt[DHCP6_Renew].trid) self.__config_setup1_1.set_ipv6_src( self.__config.get('wan', 'link_local_addr')) self.__config_setup1_1.set_ipv6_dst(pkt[IPv6].src) self.__config_setup1_1.set_ether_src( self.__config.get('wan', 'link_local_mac')) self.__config_setup1_1.set_ether_dst(pkt[Ether].src) self.__config_setup1_1.set_dhcp_preflft('0') self.__config_setup1_1.set_dhcp_validlft('0') self.__config_setup1_1.set_dhcp_plen('64') #self.__config_setup1_1.set_prefix_addr(self.__config.get('setup1-1_advertise','ia_pd_address2')) self.__sendmsgs.send_dhcp_reply_v2(self.__config_setup1_1) #self.__dhcp_ok = True def run(self): @self.__app.route("/WAN", methods=['GET']) def enviawan(): return self.get_status() self.__t_lan = Thread(target=self.run_Lan, name='LAN_Thread') self.__t_lan.start() self.__packet_sniffer_wan = PacketSniffer('Test273b-WAN', self.__queue_wan, self, self.__config, self.__wan_device_tr1) self.__packet_sniffer_wan.start() self.__packet_sniffer_lan = PacketSniffer('Test273b-LAN', self.__queue_lan, self, self.__config, self.__lan_device) self.__packet_sniffer_lan.start() cache_wan = [] self.set_flags() logging.info(self.__test_desc) t_test = 0 sent_reconfigure = False time_over = False #time.sleep(11111) self.__config_setup1_1.set_pd_prefixlen( self.__config.get('t2.7.5c', 'pd_prefixlen')) self.__config_setup1_1.set_routerlifetime( self.__config.get('t2.7.5c', 'routerlifetime')) test_max_time = 300 temporizador = 0 #self.__config_setup1_1.active_DHCP_no_IA_PD() while not self.__queue_wan.full(): while self.__queue_wan.empty(): time.sleep(1) if temporizador < test_max_time: temporizador = temporizador + 1 else: self.set_status('WAN: Reprovado. Timeout') time.sleep(2) self.set_status('REPROVADO') logging.info('WAN: Reprovado. Timeout') #logging.info(routerlifetime) self.__packet_sniffer_lan.stop() self.__packet_sniffer_wan.stop() return False if temporizador % 10 == 0: logging.info('WAN: Envio de RA periódico') self.set_status('WAN: Envio de RA periódico') self.ra_wan() pkt = self.__queue_wan.get() cache_wan.append(pkt) wrpcap("WAN-2.7.5c.cap", cache_wan) if not self.__config_setup1_1.get_setup1_1_OK(): logging.info('WAN: Setup 1.1 em execução') self.set_status('WAN: Setup 1.1 em execução') if not self.__config_setup1_1.get_disapproved(): self.__config_setup1_1.run_setup1_1(pkt) else: logging.info( 'WAN: Reprovado Teste 2.7.5c - Falha em completar o setup 1.1' ) self.set_status( 'WAN: Reprovado Teste 2.7.5c - Falha em completar o setup 1.1' ) time.sleep(2) self.set_status( 'REPROVADO' ) # Mensagem padrão para o frontEnd atualizar Status self.__packet_sniffer_lan.stop() self.__finish_wan = True self.__fail_test = True return False else: if not self.__finish_wan: if not sent_reconfigure: logging.info( 'WAN: Aguardando 25 segundos para enviar o DHCP Reconfigure' ) self.set_status( 'WAN: Aguardando 25 segundos para enviar o DHCP Reconfigure' ) time.sleep(25) self.dhcp_reconfigure() sent_reconfigure = True logging.info('WAN: DHCP Reconfigure Enviado') self.set_status('WAN: Reconfigure Enviado') if pkt.haslayer(DHCP6_Renew): logging.info('WAN: Enviando DHCP REPLY') self.set_status('WAN: Enviando DHCP REPLy') if not self.__dhcp_renew_done: self.dhcp_renew(pkt) self.__dhcp_renew_done = True else: self.__packet_sniffer_wan.stop() if self.__fail_test: return False else: return True self.__packet_sniffer_wan.stop() return False