@@ -139,41 +139,38 @@ ipx_plugin_process(ipx_ctx_t *ctx, void *cfg, ipx_msg_t *msg)
139139 conf -> window_start = new_time ;
140140
141141 // Update storage files
142- //if (conf->params->profiles.en) {
143- // stg_profiles_new_window(conf->storage.profiles, new_time);
144- //} else {
145- stg_basic_new_window (conf -> storage .basic , new_time );
146- //}
142+ stg_basic_new_window (conf -> storage .basic , new_time );
147143 }
148144
149145 ipx_msg_ipfix_t * ipfix = ipx_msg_base2ipfix (msg );
150146 const uint32_t rec_cnt = ipx_msg_ipfix_get_drec_cnt (ipfix );
151147 for (uint32_t i = 0 ; i < rec_cnt ; i ++ ) {
152148 // Get a pointer to the next record
153149 struct ipx_ipfix_record * ipfix_rec = ipx_msg_ipfix_get_drec (ipfix , i );
150+ bool biflow = (ipfix_rec -> rec .tmplt -> flags & FDS_TEMPLATE_BIFLOW ) != 0 ;
154151
155- //if (conf->params->profiles.en && !mdata->channels) {
156- /*
157- * Record won't be stored, it does not belong to any channel and
158- * profiling is activated
159- */
160- // continue;
161- //}
162-
163- // Fill record // TODO: biflow
152+ // Fill record
153+ uint16_t flags = biflow ? FDS_DREC_BIFLOW_FWD : 0 ; // In case of biflow, forward fields only
164154 lnf_rec_t * lnf_rec = conf -> record .rec_ptr ;
165- if (translator_translate (conf -> record .translator , & ipfix_rec -> rec , lnf_rec ) <= 0 ) {
155+ if (translator_translate (conf -> record .translator , & ipfix_rec -> rec , lnf_rec , flags ) <= 0 ) {
156+ // Nothing to store
157+ continue ;
158+ }
159+
160+ stg_basic_store (conf -> storage .basic , lnf_rec );
161+
162+ // Is it biflow? Store the reverse direction
163+ if (!biflow ) {
164+ continue ;
165+ }
166+
167+ flags = FDS_DREC_BIFLOW_REV ;
168+ if (translator_translate (conf -> record .translator , & ipfix_rec -> rec , lnf_rec , flags ) <= 0 ) {
166169 // Nothing to store
167170 continue ;
168171 }
169172
170- //if (conf->params->profiles.en) {
171- // Profile mode
172- //stg_profiles_store(conf->storage.profiles, mdata, lnf_rec);
173- //} else {
174- // Basic mode
175- stg_basic_store (conf -> storage .basic , lnf_rec );
176- //}
173+ stg_basic_store (conf -> storage .basic , lnf_rec );
177174 }
178175
179176 return 0 ;
0 commit comments