api: clean up use of deprecated flag
[vpp.git] / src / plugins / map / ip4_map_t.c
index e9882e7..7d16d7a 100644 (file)
@@ -92,14 +92,18 @@ ip4_to_ip6_set_inner_icmp_cb (vlib_buffer_t * b, ip4_header_t * ip4,
                              ip6_header_t * ip6, void *arg)
 {
   icmp_to_icmp6_ctx_t *ctx = arg;
+  ip4_address_t old_src, old_dst;
+
+  old_src.as_u32 = ip4->src_address.as_u32;
+  old_dst.as_u32 = ip4->dst_address.as_u32;
 
   //Note that the source address is within the domain
   //while the destination address is the one outside the domain
-  ip4_map_t_embedded_address (ctx->d, &ip6->dst_address, &ip4->dst_address);
+  ip4_map_t_embedded_address (ctx->d, &ip6->dst_address, &old_dst);
   ip6->src_address.as_u64[0] =
-    map_get_pfx_net (ctx->d, ip4->src_address.as_u32, ctx->recv_port);
+    map_get_pfx_net (ctx->d, old_src.as_u32, ctx->recv_port);
   ip6->src_address.as_u64[1] =
-    map_get_sfx_net (ctx->d, ip4->src_address.as_u32, ctx->recv_port);
+    map_get_sfx_net (ctx->d, old_src.as_u32, ctx->recv_port);
 
   return 0;
 }
@@ -150,7 +154,7 @@ ip4_map_t_icmp (vlib_main_t * vm,
                               vnet_buffer (p0)->map_t.map_domain_index);
 
          ip40 = vlib_buffer_get_current (p0);
-         ctx0.recv_port = ip4_get_port (ip40, 1);
+         ctx0.recv_port = ip4_get_port (ip40, 0);
          ctx0.d = d0;
          if (ctx0.recv_port == 0)
            {
@@ -524,11 +528,11 @@ ip4_map_t_classify (vlib_buffer_t * p0, map_domain_t * d0,
       *next0 = IP4_MAPT_NEXT_MAPT_ICMP;
       if (d0->ea_bits_len == 0 && d0->rules)
        *dst_port0 = 0;
-      else if (((icmp46_header_t *) u8_ptr_add (ip40, sizeof (*ip40)))->code
+      else if (((icmp46_header_t *) u8_ptr_add (ip40, sizeof (*ip40)))->type
               == ICMP4_echo_reply
               || ((icmp46_header_t *)
                   u8_ptr_add (ip40,
-                              sizeof (*ip40)))->code == ICMP4_echo_request)
+                              sizeof (*ip40)))->type == ICMP4_echo_request)
        *dst_port0 = l4_dst_port;
     }
   else