From 23a15b34e410def81d4bb3e2c8f28f118b59dc5a Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Tue, 12 Oct 2021 12:45:08 +0200 Subject: Revert "nat: static mappings in flow hash" This reverts commit 69b7599e4b061a8996205f0304232ede84cb70d4. Type: fix Signed-off-by: Ole Troan Change-Id: If531b122ae5a9f91c2fe6eaa0da69922a91f16d3 --- src/plugins/nat/lib/lib.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/plugins/nat/lib/lib.h') diff --git a/src/plugins/nat/lib/lib.h b/src/plugins/nat/lib/lib.h index cea9ed71c8c..b0b5229b337 100644 --- a/src/plugins/nat/lib/lib.h +++ b/src/plugins/nat/lib/lib.h @@ -54,6 +54,19 @@ typedef enum #undef _ } nat_error_t; +#define foreach_nat_protocol \ + _ (OTHER, 0, other, "other") \ + _ (UDP, 1, udp, "udp") \ + _ (TCP, 2, tcp, "tcp") \ + _ (ICMP, 3, icmp, "icmp") + +typedef enum +{ +#define _(N, i, n, s) NAT_PROTOCOL_##N = i, + foreach_nat_protocol +#undef _ +} nat_protocol_t; + /* default protocol timeouts */ #define NAT_UDP_TIMEOUT 300 #define NAT_TCP_TRANSITORY_TIMEOUT 240 @@ -82,6 +95,29 @@ nat_reset_timeouts (nat_timeouts_t * timeouts) timeouts->icmp = NAT_ICMP_TIMEOUT; } +static_always_inline u32 +nat_session_get_timeout (nat_timeouts_t *timeouts, nat_protocol_t proto, + u8 state) +{ + switch (proto) + { + case NAT_PROTOCOL_ICMP: + return timeouts->icmp; + case NAT_PROTOCOL_UDP: + return timeouts->udp; + case NAT_PROTOCOL_TCP: + { + if (state) + return timeouts->tcp.transitory; + else + return timeouts->tcp.established; + } + default: + return timeouts->udp; + } + return 0; +} + static_always_inline u32 nat_calc_bihash_buckets (u32 n_elts) { @@ -102,6 +138,10 @@ nat_calc_bihash_buckets (u32 n_elts) return lower_pow2; } +u8 *format_nat_protocol (u8 *s, va_list *args); + +uword unformat_nat_protocol (unformat_input_t *input, va_list *args); + #endif /* included_nat_lib_h__ */ /* * fd.io coding-style-patch-verification: ON -- cgit 1.2.3-korg