diff --git a/dp-core/vr_flow.c b/dp-core/vr_flow.c index 8110173ee..90ca48901 100644 --- a/dp-core/vr_flow.c +++ b/dp-core/vr_flow.c @@ -868,6 +868,8 @@ vr_trap_flow(struct vrouter *router, struct vr_flow_entry *fe, ta.vfta_stats = fe->fe_stats; } + ta.vfta_gen_id = fe->fe_gen_id; + break; } diff --git a/dp-core/vr_interface.c b/dp-core/vr_interface.c index 851ae87eb..bcb7183c8 100644 --- a/dp-core/vr_interface.c +++ b/dp-core/vr_interface.c @@ -487,6 +487,7 @@ agent_send(struct vr_interface *vif, struct vr_packet *pkt, hdr->hdr_cmd_param_3 = htonl(fta->vfta_stats.flow_packets); hdr->hdr_cmd_param_4 = htonl((fta->vfta_stats.flow_bytes_oflow | (fta->vfta_stats.flow_packets_oflow << 16))); + hdr->hdr_cmd_param_5 = fta->vfta_gen_id; } break; diff --git a/include/vr_defs.h b/include/vr_defs.h index 5ec32b0a3..df8d3859e 100644 --- a/include/vr_defs.h +++ b/include/vr_defs.h @@ -64,6 +64,8 @@ struct agent_hdr { unsigned int hdr_cmd_param_2; unsigned int hdr_cmd_param_3; unsigned int hdr_cmd_param_4; + uint8_t hdr_cmd_param_5; + uint8_t hdr_cmd_param_5_pack[3]; } __attribute__((packed)); #define CMD_PARAM_PACKET_CTRL 0x1 diff --git a/include/vr_flow.h b/include/vr_flow.h index 4bfe26eb8..19bd7cb5d 100644 --- a/include/vr_flow.h +++ b/include/vr_flow.h @@ -369,6 +369,7 @@ struct vr_flow_trap_arg { unsigned int vfta_index; unsigned int vfta_nh_index; struct vr_flow_stats vfta_stats; + uint8_t vfta_gen_id; }; typedef enum {