def METHOD_NAME(self, configuration):
    """
    The IP6GRE tunnel devices are configured with IPv4 and IPv6 addresses
    of individual networks. Routes are configured accordingly.
    """
    endpoint1, endpoint2 = configuration.tunnel_endpoints
    m1 = endpoint1.netns
    m2 = endpoint2.netns
    ip_filter = {"family": AF_INET6, "is_link_local": False}
    endpoint1_ip = endpoint1.ips_filter(**ip_filter)[0]
    endpoint2_ip = endpoint2.ips_filter(**ip_filter)[0]
    a_ip4 = Ip4Address("192.168.6.2/24")
    a_net4 = "192.168.6.0/24"
    b_ip4 = Ip4Address("192.168.7.2/24")
    b_net4 = "192.168.7.0/24"
    a_ip6 = Ip6Address("6001:db8:ac10:fe01::2/64")
    a_net6 = "6001:db8:ac10:fe01::0/64"
    b_ip6 = Ip6Address("7001:db8:ac10:fe01::2/64")
    b_net6 = "7001:db8:ac10:fe01::0/64"
    m1.gre6_tunnel = Ip6GreDevice(local=endpoint1_ip, remote=endpoint2_ip)
    m2.gre6_tunnel = Ip6GreDevice(local=endpoint2_ip, remote=endpoint1_ip)
    # A
    m1.gre6_tunnel.up()
    m1.gre6_tunnel.ip_add(a_ip4)
    m1.gre6_tunnel.ip_add(a_ip6)
    m1.run("ip -4 route add {} dev {}".format(b_net4, m1.gre6_tunnel.name))
    m1.run("ip -6 route add {} dev {}".format(b_net6, m1.gre6_tunnel.name))
    # B
    m2.gre6_tunnel.up()
    m2.gre6_tunnel.ip_add(b_ip4)
    m2.gre6_tunnel.ip_add(b_ip6)
    m2.run("ip -4 route add {} dev {}".format(a_net4, m2.gre6_tunnel.name))
    m2.run("ip -6 route add {} dev {}".format(a_net6, m2.gre6_tunnel.name))
    configuration.tunnel_devices.extend([m1.gre6_tunnel, m2.gre6_tunnel])
    self.wait_tentative_ips(configuration.tunnel_devices)