def METHOD_NAME(interface, dst_out, dst_in, sockets, exp_socket, max_iter):
    dscp = DHCP_DEFAULT
    tos = dscp << 2
    src_out = dst_in
    decap_valid = False
    for x in range(0, max_iter):
        print("---------- Attempting to create probe packet that goes through %s, iteration: %d ---------" % (interface, x))
        ip_src = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
        ip_src = ipaddress.IPv4Address(ip_src)
        while ip_src == ipaddress.IPv4Address(dst_in) or \
              ip_src.is_multicast or ip_src.is_private or ip_src.is_reserved:
            ip_src = socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
            ip_src = ipaddress.IPv4Address(ip_src)
        inner_pkt = IP(src=ip_src, dst=dst_in, tos=tos, ttl=64, id=1, ihl=None,proto=4)/ICMP()
        inner_pkt = inner_pkt/("".join([chr(x%256) for x in range(PROBE_PACKET_LEN - len(inner_pkt))]))
        pkt = IP(src=src_out, dst=dst_out, tos=tos)/inner_pkt
        exp_pkt = inner_pkt
        exp_pkt['IP'].ttl = 63
        time_sent = time.time()
        res = send(pkt, iface=interface, verbose=False)
        have_received, delay, recv_socket = receive(sockets, SELECT_TIMEOUT, exp_pkt, time_sent)
        if have_received and recv_socket == exp_socket:
            return pkt, exp_pkt
        elif have_received:
            decap_valid = True
    if decap_valid:
       print("Decap works properly. link %s is unreachable, Please check!\n" % interface)
       sys.exit(0)
    else:
       print("Decap using %s doesn't work properly, Please Check!\n" % (dst_out))
       sys.exit(0)