ofproto-dpif-xlate: use IPv6 for tnl_neigh_cache
authorThadeu Lima de Souza Cascardo <cascardo@redhat.com>
Wed, 25 Nov 2015 13:31:12 +0000 (11:31 -0200)
committerBen Pfaff <blp@ovn.org>
Mon, 30 Nov 2015 18:44:42 +0000 (10:44 -0800)
Use IPv4-mapped address and replace tnl_arp_lookup with tnl_neigh_lookup.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Signed-off-by: Ben Pfaff <blp@ovn.org>
ofproto/ofproto-dpif-xlate.c

index 6dc99f4..36a2f66 100644 (file)
@@ -451,7 +451,7 @@ struct xc_entry {
         } group;
         struct {
             char br_name[IFNAMSIZ];
-            ovs_be32 d_ip;
+            struct in6_addr d_ipv6;
         } tnl_neigh_cache;
     } u;
 };
@@ -2813,7 +2813,7 @@ build_tunnel_send(struct xlate_ctx *ctx, const struct xport *xport,
         entry = xlate_cache_add_entry(ctx->xin->xcache, XC_TNL_NEIGH);
         ovs_strlcpy(entry->u.tnl_neigh_cache.br_name, out_dev->xbridge->name,
                     sizeof entry->u.tnl_neigh_cache.br_name);
-        entry->u.tnl_neigh_cache.d_ip = d_ip;
+        in6_addr_set_mapped_ipv4(&entry->u.tnl_neigh_cache.d_ipv6, d_ip);
     }
 
     xlate_report(ctx, "tunneling from "ETH_ADDR_FMT" "IP_FMT
@@ -5486,8 +5486,8 @@ xlate_push_stats(struct xlate_cache *xcache,
             break;
         case XC_TNL_NEIGH:
             /* Lookup neighbor to avoid timeout. */
-            tnl_arp_lookup(entry->u.tnl_neigh_cache.br_name,
-                           entry->u.tnl_neigh_cache.d_ip, &dmac);
+            tnl_neigh_lookup(entry->u.tnl_neigh_cache.br_name,
+                             &entry->u.tnl_neigh_cache.d_ipv6, &dmac);
             break;
         default:
             OVS_NOT_REACHED();