- data_tcpudp = ofpbuf_put_zeros(&msg, sizeof *data_tcpudp);
- data_tcpudp->source_transport_port = flow->tp_src;
- data_tcpudp->destination_transport_port = flow->tp_dst;
+ data_transport = ofpbuf_put_zeros(&msg, sizeof *data_transport);
+ data_transport->source_transport_port = flow->tp_src;
+ data_transport->destination_transport_port = flow->tp_dst;
+ } else if (l4 == IPFIX_PROTO_L4_ICMP) {
+ struct ipfix_data_record_flow_key_icmp *data_icmp;
+
+ data_icmp = ofpbuf_put_zeros(&msg, sizeof *data_icmp);
+ data_icmp->icmp_type = ntohs(flow->tp_src) & 0xff;
+ data_icmp->icmp_code = ntohs(flow->tp_dst) & 0xff;