Пример #1
0
            if forwarding_ip != WAN_ip:
                dst_ip = forwarding_ip
                
            else:
                dst_ip = network.dst_ip
            if dst_ip != forwarding_ip:
                print('forwaring to', forwarding_table[network.dst_ip])
            dst_mac = util.ip2mac(dst_ip)
            linklayer.sendto(dst_mac, frame)
        elif (network.dst_ip, transport.dst_port) in NAT_in :
            network.dst_ip, transport.dst_port = NAT_in[(network.dst_ip, transport.dst_port)]
            frame = pack(network, transport)
            IP.push(frame)
        else:
            ICMP.host_unreachable(WAN_ip, network.src_ip)

linklayer = LinkLayer(callback)


# def is_reachable_host(dst_ip):
#     '''
#     Private method for check if the current dst_ip is legal
#     :param dst_ip: dst_ip
#     :return: boolean
#     '''
#     ip_list = [util.get_local_ipv4_address()]
#     for ele in NAT_in.keys():
#         ip_list.append(ele[0])
#     if dst_ip not in forwarding_table.values() or ip_list:
#         return False
#     return True