14 #ifndef __IO_GRAPH_ITEM_H__
15 #define __IO_GRAPH_ITEM_H__
26 IOG_ITEM_UNIT_PACKETS = IOG_ITEM_UNIT_FIRST,
29 IOG_ITEM_UNIT_CALC_SUM,
30 IOG_ITEM_UNIT_CALC_FRAMES,
31 IOG_ITEM_UNIT_CALC_FIELDS,
32 IOG_ITEM_UNIT_CALC_MAX,
33 IOG_ITEM_UNIT_CALC_MIN,
34 IOG_ITEM_UNIT_CALC_AVERAGE,
35 IOG_ITEM_UNIT_CALC_LOAD,
36 IOG_ITEM_UNIT_LAST = IOG_ITEM_UNIT_CALC_LOAD,
38 } io_graph_item_unit_t;
59 guint32 first_frame_in_invl;
60 guint32 extreme_frame_in_invl;
61 guint32 last_frame_in_invl;
74 for (i = 0; i < count; i++) {
92 item->first_frame_in_invl = 0;
93 item->extreme_frame_in_invl = 0;
94 item->last_frame_in_invl = 0;
117 GString *
check_field_unit(
const char *field_name,
int *hf_index, io_graph_item_unit_t item_unit);
145 static inline gboolean
150 if (item->first_frame_in_invl == 0) {
151 item->first_frame_in_invl = pinfo->
num;
153 item->last_frame_in_invl = pinfo->
num;
155 if (edt && hf_index >= 0) {
166 for (i=0; i < gp->len; i++) {
178 new_uint64 = fvalue_get_uinteger(((
field_info *)gp->pdata[i])->value);
180 if ((new_uint64 > (guint64)item->int_max) || (item->fields == 0)) {
181 item->int_max = new_uint64;
182 item->double_max = (gdouble)new_uint64;
183 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
184 item->extreme_frame_in_invl = pinfo->
num;
187 if ((new_uint64 < (guint64)item->int_min) || (item->fields == 0)) {
188 item->int_min = new_uint64;
189 item->double_min = (gdouble)new_uint64;
190 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
191 item->extreme_frame_in_invl = pinfo->
num;
194 item->int_tot += new_uint64;
195 item->double_tot += (gdouble)new_uint64;
202 new_int64 = fvalue_get_sinteger(((
field_info *)gp->pdata[i])->value);
203 if ((new_int64 > item->int_max) || (item->fields == 0)) {
204 item->int_max = new_int64;
205 item->double_max = (gdouble)new_int64;
206 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
207 item->extreme_frame_in_invl = pinfo->
num;
210 if ((new_int64 < item->int_min) || (item->fields == 0)) {
211 item->int_min = new_int64;
212 item->double_min = (gdouble)new_int64;
213 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
214 item->extreme_frame_in_invl = pinfo->
num;
217 item->int_tot += new_int64;
218 item->double_tot += (gdouble)new_int64;
225 new_uint64 = fvalue_get_uinteger64(((
field_info *)gp->pdata[i])->value);
226 if ((new_uint64 > (guint64)item->int_max) || (item->fields == 0)) {
227 item->int_max = new_uint64;
228 item->double_max = (gdouble)new_uint64;
229 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
230 item->extreme_frame_in_invl = pinfo->
num;
233 if ((new_uint64 < (guint64)item->int_min) || (item->fields == 0)) {
234 item->int_min = new_uint64;
235 item->double_min = (gdouble)new_uint64;
236 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
237 item->extreme_frame_in_invl = pinfo->
num;
240 item->int_tot += new_uint64;
241 item->double_tot += (gdouble)new_uint64;
248 new_int64 = fvalue_get_sinteger64(((
field_info *)gp->pdata[i])->value);
249 if ((new_int64 > item->int_max) || (item->fields == 0)) {
250 item->int_max = new_int64;
251 item->double_max = (gdouble)new_int64;
252 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
253 item->extreme_frame_in_invl = pinfo->
num;
256 if ((new_int64 < item->int_min) || (item->fields == 0)) {
257 item->int_min = new_int64;
258 item->double_min = (gdouble)new_int64;
259 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
260 item->extreme_frame_in_invl = pinfo->
num;
263 item->int_tot += new_int64;
264 item->double_tot += (gdouble)new_int64;
268 new_float = (gfloat)fvalue_get_floating(((
field_info *)gp->pdata[i])->value);
269 if ((new_float > item->float_max) || (item->fields == 0)) {
270 item->float_max = new_float;
271 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
272 item->extreme_frame_in_invl = pinfo->
num;
275 if ((new_float < item->float_min) || (item->fields == 0)) {
276 item->float_min = new_float;
277 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
278 item->extreme_frame_in_invl = pinfo->
num;
281 item->float_tot += new_float;
285 new_double = fvalue_get_floating(((
field_info *)gp->pdata[i])->value);
286 if ((new_double > item->double_max) || (item->fields == 0)) {
287 item->double_max = new_double;
288 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
289 item->extreme_frame_in_invl = pinfo->
num;
292 if ((new_double < item->double_min) || (item->fields == 0)) {
293 item->double_min = new_double;
294 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
295 item->extreme_frame_in_invl = pinfo->
num;
298 item->double_tot += new_double;
301 case FT_RELATIVE_TIME:
302 new_time = fvalue_get_time(((
field_info *)gp->pdata[i])->value);
305 case IOG_ITEM_UNIT_CALC_LOAD:
314 t = t * 1000000 + new_time->nsecs / 1000;
319 pt = pinfo->
rel_ts.secs * 1000000 + pinfo->
rel_ts.nsecs / 1000;
320 pt = pt % (interval * 1000);
327 load_item = &items[j];
328 load_item->time_tot.nsecs += (int) (pt * 1000);
329 if (load_item->time_tot.nsecs > 1000000000) {
330 load_item->time_tot.secs++;
331 load_item->time_tot.nsecs -= 1000000000;
339 if (t > (guint64) interval * 1000) {
340 pt = (guint64) interval * 1000;
348 if ( (new_time->secs > item->time_max.secs)
349 || ( (new_time->secs == item->time_max.secs)
350 && (new_time->nsecs > item->time_max.nsecs))
351 || (item->fields == 0)) {
352 item->time_max = *new_time;
353 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
354 item->extreme_frame_in_invl = pinfo->
num;
357 if ( (new_time->secs<item->time_min.secs)
358 || ( (new_time->secs == item->time_min.secs)
359 && (new_time->nsecs < item->time_min.nsecs))
360 || (item->fields == 0)) {
361 item->time_min = *new_time;
362 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
363 item->extreme_frame_in_invl = pinfo->
num;
371 if ((item_unit == IOG_ITEM_UNIT_CALC_FRAMES) ||
372 (item_unit == IOG_ITEM_UNIT_CALC_FIELDS)) {
386 ws_assert_not_reached();
394 item->bytes += pinfo->fd->pkt_len;
enum ftenum proto_registrar_get_ftype(const int n)
Definition: proto.c:10865
GPtrArray * proto_get_finfo_ptr_array(const proto_tree *tree, const int id)
Definition: proto.c:10925
double get_io_graph_item(const io_graph_item_t *items, io_graph_item_unit_t val_units, int idx, int hf_index, const capture_file *cap_file, int interval, int cur_idx)
Definition: io_graph_item.c:130
GString * check_field_unit(const char *field_name, int *hf_index, io_graph_item_unit_t item_unit)
Definition: io_graph_item.c:37
int get_io_graph_index(packet_info *pinfo, int interval)
Definition: io_graph_item.c:20
#define nstime_add(sum, a)
Definition: nstime.h:96
WS_DLL_PUBLIC void nstime_set_zero(nstime_t *nstime)
Definition: nstime.c:28
Definition: io_graph_item.h:40
Definition: packet_info.h:44
nstime_t rel_ts
Definition: packet_info.h:50
guint32 num
Definition: packet_info.h:48
Definition: epan_dissect.h:28