nat: fix dhcp client on outside interface with output feature
[vpp.git] / src / plugins / nat / in2out_ed.c
index ebcd298..e524110 100644 (file)
@@ -1001,11 +1001,11 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
                       * be able to use dhcp client on the outside interface
                       */
                      if (PREDICT_FALSE
-                         ((b0->flags & VNET_BUFFER_F_LOCALLY_ORIGINATED)
-                          && proto0 == SNAT_PROTOCOL_UDP
+                         (proto0 == SNAT_PROTOCOL_UDP
                           && (vnet_buffer (b0)->ip.reass.l4_dst_port ==
                               clib_host_to_net_u16
-                              (UDP_DST_PORT_dhcp_to_server))))
+                              (UDP_DST_PORT_dhcp_to_server))
+                          && ip0->dst_address.as_u32 == 0xffffffff))
                        goto trace00;
                    }
                  else
@@ -1245,11 +1245,11 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
                       * be able to use dhcp client on the outside interface
                       */
                      if (PREDICT_FALSE
-                         ((b1->flags & VNET_BUFFER_F_LOCALLY_ORIGINATED)
-                          && proto1 == SNAT_PROTOCOL_UDP
+                         (proto1 == SNAT_PROTOCOL_UDP
                           && (vnet_buffer (b1)->ip.reass.l4_dst_port ==
                               clib_host_to_net_u16
-                              (UDP_DST_PORT_dhcp_to_server))))
+                              (UDP_DST_PORT_dhcp_to_server))
+                          && ip1->dst_address.as_u32 == 0xffffffff))
                        goto trace01;
                    }
                  else
@@ -1538,11 +1538,11 @@ nat44_ed_in2out_node_fn_inline (vlib_main_t * vm,
                       * be able to use dhcp client on the outside interface
                       */
                      if (PREDICT_FALSE
-                         ((b0->flags & VNET_BUFFER_F_LOCALLY_ORIGINATED)
-                          && proto0 == SNAT_PROTOCOL_UDP
+                         (proto0 == SNAT_PROTOCOL_UDP
                           && (vnet_buffer (b0)->ip.reass.l4_dst_port ==
                               clib_host_to_net_u16
-                              (UDP_DST_PORT_dhcp_to_server))))
+                              (UDP_DST_PORT_dhcp_to_server))
+                          && ip0->dst_address.as_u32 == 0xffffffff))
                        goto trace0;
                    }
                  else