};
nat44_is_idle_session_ctx_t ctx0;
- nat44_session_try_cleanup (&ip0->src_address, rx_fib_index0, thread_index,
- now);
-
if (PREDICT_FALSE (nat44_maximum_sessions_exceeded (sm, thread_index)))
{
b0->error = node->errors[SNAT_IN2OUT_ERROR_MAX_SESSIONS_EXCEEDED];
* 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
* 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
* 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