rmp = vl_msg_api_alloc (
sizeof (*rmp) + (pool_elts (m->locals) * sizeof (nat44_lb_addr_port_t)));
+
clib_memset (rmp, 0, sizeof (*rmp));
rmp->_vl_msg_id =
ntohs (VL_API_NAT44_LB_STATIC_MAPPING_DETAILS + sm->msg_id_base);
rmp->context = context;
rmp->outside_port = s->out2in.port;
rmp->inside_port = s->in2out.port;
- rmp->protocol = ntohs (s->proto);
+ rmp->protocol = clib_host_to_net_u16 (s->proto);
clib_memcpy (rmp->ext_host_address, &s->ext_host_addr, 4);
rmp->ext_host_port = s->ext_host_port;
if (nat44_ed_is_twice_nat_session (s))
rmp->total_bytes = clib_host_to_net_u64 (s->total_bytes);
rmp->total_pkts = ntohl (s->total_pkts);
rmp->context = context;
- if (snat_is_unk_proto_session (s))
- {
- rmp->outside_port = 0;
- rmp->inside_port = 0;
- rmp->protocol = ntohs (s->in2out.port);
- }
- else
- {
- rmp->outside_port = s->out2in.port;
- rmp->inside_port = s->in2out.port;
- rmp->protocol = ntohs (nat_proto_to_ip_proto (s->nat_proto));
- }
+ rmp->outside_port = s->out2in.port;
+ rmp->inside_port = s->in2out.port;
+ rmp->protocol = clib_host_to_net_u16 (s->proto);
clib_memcpy (rmp->ext_host_address, &s->ext_host_addr, 4);
rmp->ext_host_port = s->ext_host_port;
if (nat44_ed_is_twice_nat_session (s))
rmp->ext_host_nat_port = s->ext_host_nat_port;
}
- sess_timeout_time = s->last_heard + (f64) nat_session_get_timeout (
- &sm->timeouts, s->nat_proto, s->state);
+ sess_timeout_time = s->last_heard;
+ switch (s->proto)
+ {
+ case IP_PROTOCOL_TCP:
+ if (s->state)
+ sess_timeout_time += sm->timeouts.tcp.established;
+ else
+ sess_timeout_time += sm->timeouts.tcp.transitory;
+ break;
+ case IP_PROTOCOL_UDP:
+ sess_timeout_time += sm->timeouts.udp;
+ break;
+ case IP_PROTOCOL_ICMP:
+ sess_timeout_time += sm->timeouts.icmp;
+ break;
+ default:
+ sess_timeout_time += sm->timeouts.udp;
+ break;
+ }
+
rmp->is_timed_out = (now >= sess_timeout_time);
vl_api_send_msg (reg, (u8 *) rmp);