aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/snat/in2out.c25
-rw-r--r--src/plugins/snat/out2in.c10
2 files changed, 28 insertions, 7 deletions
diff --git a/src/plugins/snat/in2out.c b/src/plugins/snat/in2out.c
index c78fdd76..cd8f1271 100644
--- a/src/plugins/snat/in2out.c
+++ b/src/plugins/snat/in2out.c
@@ -350,7 +350,10 @@ static inline u32 icmp_in2out_slow_path (snat_main_t *sm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
@@ -640,7 +643,10 @@ snat_in2out_node_fn_inline (vlib_main_t * vm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
@@ -788,7 +794,10 @@ snat_in2out_node_fn_inline (vlib_main_t * vm,
ip4_interface_first_address (sm->ip4_main, sw_if_index1,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index1;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
@@ -971,7 +980,10 @@ snat_in2out_node_fn_inline (vlib_main_t * vm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
@@ -1350,7 +1362,10 @@ static inline u32 icmp_in2out_static_map (snat_main_t *sm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
diff --git a/src/plugins/snat/out2in.c b/src/plugins/snat/out2in.c
index 9e5a8af8..0c9c9cd1 100644
--- a/src/plugins/snat/out2in.c
+++ b/src/plugins/snat/out2in.c
@@ -255,7 +255,10 @@ static inline u32 icmp_out2in_slow_path (snat_main_t *sm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */
@@ -1043,7 +1046,10 @@ static inline u32 icmp_out2in_fast (snat_main_t *sm,
ip4_interface_first_address (sm->ip4_main, sw_if_index0,
0 /* just want the address */);
rt->cached_sw_if_index = sw_if_index0;
- rt->cached_ip4_address = first_int_addr->as_u32;
+ if (first_int_addr)
+ rt->cached_ip4_address = first_int_addr->as_u32;
+ else
+ rt->cached_ip4_address = 0;
}
/* Don't NAT packet aimed at the intfc address */