summaryrefslogtreecommitdiffstats
path: root/src/latency.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/latency.cpp')
-rw-r--r--src/latency.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/latency.cpp b/src/latency.cpp
index 3969c357..b213690f 100644
--- a/src/latency.cpp
+++ b/src/latency.cpp
@@ -436,7 +436,7 @@ bool CCPortLatency::check_packet(rte_mbuf_t * m,CRx_check_header * & rx_p) {
case CNatOption::noIPV4_OPTION:
/* NAT learn option header */
CNatOption *lp;
- if ( ( !CGlobalInfo::is_learn_mode() ) ||
+ if ( ( !CGlobalInfo::is_learn_mode(CParserOption::LEARN_MODE_IP_OPTION) ) ||
(opt_len < CNatOption::noOPTION_LEN) ) {
m_seq_error++;
return (false);
@@ -455,9 +455,14 @@ bool CCPortLatency::check_packet(rte_mbuf_t * m,CRx_check_header * & rx_p) {
return (false);
} // End of switch
} // End of while
+ if (CGlobalInfo::is_learn_mode(CParserOption::LEARN_MODE_TCP_ACK)
+ && parser.IsNatInfoPkt()) {
+ m_parent->get_nat_manager()->handle_packet_ipv4(NULL, parser.m_ipv4);
+ }
return (true);
} // End of check for non-latency packet
+ // learn for latency packets. We only have one flow for latency, so translation is for it.
if ( CGlobalInfo::is_learn_mode() && (m_nat_learn ==false) ) {
do_learn(parser.m_ipv4->getSourceIp());
}