Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
nat: fix ICMP error translation
[vpp.git]
/
src
/
plugins
/
nat
/
nat44-ed
/
nat44_ed.c
diff --git
a/src/plugins/nat/nat44-ed/nat44_ed.c
b/src/plugins/nat/nat44-ed/nat44_ed.c
index
e389a81
..
8f35643
100644
(file)
--- a/
src/plugins/nat/nat44-ed/nat44_ed.c
+++ b/
src/plugins/nat/nat44-ed/nat44_ed.c
@@
-38,7
+38,7
@@
#include <nat/nat44-ed/nat44_ed_affinity.h>
#include <nat/nat44-ed/nat44_ed_inlines.h>
#include <nat/nat44-ed/nat44_ed_affinity.h>
#include <nat/nat44-ed/nat44_ed_inlines.h>
-#include <v
pp/stats/stat_segment
.h>
+#include <v
lib/stats/stats
.h>
snat_main_t snat_main;
snat_main_t snat_main;
@@
-2290,8
+2290,8
@@
nat_init (vlib_main_t * vm)
nat_init_simple_counter (sm->total_sessions, "total-sessions",
"/nat44-ed/total-sessions");
nat_init_simple_counter (sm->total_sessions, "total-sessions",
"/nat44-ed/total-sessions");
- sm->max_cfg_sessions_gauge =
stat_segment_new_entry (
-
(u8 *) "/nat44-ed/max-cfg-sessions", STAT_DIR_TYPE_SCALAR_INDEX
);
+ sm->max_cfg_sessions_gauge =
+
vlib_stats_add_gauge ("/nat44-ed/max-cfg-sessions"
);
#define _(x) \
nat_init_simple_counter (sm->counters.fastpath.in2out.x, #x, \
#define _(x) \
nat_init_simple_counter (sm->counters.fastpath.in2out.x, #x, \
@@
-2373,8
+2373,8
@@
nat44_plugin_enable (nat44_config_t c)
c.sessions = 63 * 1024;
sm->max_translations_per_thread = c.sessions;
c.sessions = 63 * 1024;
sm->max_translations_per_thread = c.sessions;
-
stat_segment_set_state_counter
(sm->max_cfg_sessions_gauge,
-
sm->max_translations_per_thread);
+
vlib_stats_set_gauge
(sm->max_cfg_sessions_gauge,
+ sm->max_translations_per_thread);
sm->translation_buckets = nat_calc_bihash_buckets (c.sessions);
vec_add1 (sm->max_translations_per_fib, sm->max_translations_per_thread);
sm->translation_buckets = nat_calc_bihash_buckets (c.sessions);
vec_add1 (sm->max_translations_per_fib, sm->max_translations_per_thread);
@@
-2584,6
+2584,8
@@
nat44_plugin_disable ()
clib_memset (&sm->rconfig, 0, sizeof (sm->rconfig));
clib_memset (&sm->rconfig, 0, sizeof (sm->rconfig));
+ nat_affinity_disable ();
+
sm->forwarding_enabled = 0;
sm->enabled = 0;
sm->forwarding_enabled = 0;
sm->enabled = 0;
@@
-3143,8
+3145,8
@@
nat44_update_session_limit (u32 session_limit, u32 vrf_id)
return 1;
sm->max_translations_per_thread = nat44_get_max_session_limit ();
return 1;
sm->max_translations_per_thread = nat44_get_max_session_limit ();
-
stat_segment_set_state_counter
(sm->max_cfg_sessions_gauge,
-
sm->max_translations_per_thread);
+
vlib_stats_set_gauge
(sm->max_cfg_sessions_gauge,
+ sm->max_translations_per_thread);
sm->translation_buckets =
nat_calc_bihash_buckets (sm->max_translations_per_thread);
sm->translation_buckets =
nat_calc_bihash_buckets (sm->max_translations_per_thread);
@@
-3799,6
+3801,9
@@
nat_6t_flow_icmp_translate (vlib_main_t *vm, snat_main_t *sm, vlib_buffer_t *b,
icmp->checksum = new_icmp_sum;
break;
case IP_PROTOCOL_ICMP:
icmp->checksum = new_icmp_sum;
break;
case IP_PROTOCOL_ICMP:
+ nat_6t_flow_ip4_translate (sm, b, inner_ip, f, inner_proto,
+ 1 /* is_icmp_inner_ip4 */,
+ 0 /* skip_saddr_rewrite */);
if (f->ops & NAT_FLOW_OP_ICMP_ID_REWRITE)
{
icmp46_header_t *inner_icmp = ip4_next_header (inner_ip);
if (f->ops & NAT_FLOW_OP_ICMP_ID_REWRITE)
{
icmp46_header_t *inner_icmp = ip4_next_header (inner_ip);