13 #ifndef __IO_GRAPH_ITEM_H__ 14 #define __IO_GRAPH_ITEM_H__ 22 IOG_ITEM_UNIT_PACKETS = IOG_ITEM_UNIT_FIRST,
25 IOG_ITEM_UNIT_CALC_SUM,
26 IOG_ITEM_UNIT_CALC_FRAMES,
27 IOG_ITEM_UNIT_CALC_FIELDS,
28 IOG_ITEM_UNIT_CALC_MAX,
29 IOG_ITEM_UNIT_CALC_MIN,
30 IOG_ITEM_UNIT_CALC_AVERAGE,
31 IOG_ITEM_UNIT_CALC_LOAD,
32 IOG_ITEM_UNIT_LAST = IOG_ITEM_UNIT_CALC_LOAD,
34 } io_graph_item_unit_t;
55 guint32 first_frame_in_invl;
56 guint32 extreme_frame_in_invl;
57 guint32 last_frame_in_invl;
70 for (i = 0; i < count; i++) {
88 item->first_frame_in_invl = 0;
89 item->extreme_frame_in_invl = 0;
90 item->last_frame_in_invl = 0;
102 int get_io_graph_index(
packet_info *pinfo,
int interval);
113 GString *check_field_unit(
const char *field_name,
int *hf_index, io_graph_item_unit_t item_unit);
129 static inline gboolean
134 if (item->first_frame_in_invl == 0) {
135 item->first_frame_in_invl = pinfo->
num;
137 item->last_frame_in_invl = pinfo->
num;
139 if (edt && hf_index >= 0) {
150 for (i=0; i < gp->len; i++) {
162 new_int = fvalue_get_uinteger(&((
field_info *)gp->pdata[i])->value);
164 if ((new_int > item->int_max) || (item->fields == 0)) {
165 item->int_max = new_int;
166 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
167 item->extreme_frame_in_invl = pinfo->
num;
170 if ((new_int < item->int_min) || (item->fields == 0)) {
171 item->int_min = new_int;
172 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
173 item->extreme_frame_in_invl = pinfo->
num;
176 item->int_tot += new_int;
183 new_int = fvalue_get_sinteger(&((
field_info *)gp->pdata[i])->value);
184 if ((new_int > item->int_max) || (item->fields == 0)) {
185 item->int_max = new_int;
186 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
187 item->extreme_frame_in_invl = pinfo->
num;
190 if ((new_int < item->int_min) || (item->fields == 0)) {
191 item->int_min = new_int;
192 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
193 item->extreme_frame_in_invl = pinfo->
num;
196 item->int_tot += new_int;
203 new_int64 = fvalue_get_uinteger64(&((
field_info *)gp->pdata[i])->value);
204 if ((new_int64 > item->int_max) || (item->fields == 0)) {
205 item->int_max = 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 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
213 item->extreme_frame_in_invl = pinfo->
num;
216 item->int_tot += new_int64;
223 new_int64 = fvalue_get_sinteger64(&((
field_info *)gp->pdata[i])->value);
224 if ((new_int64 > item->int_max) || (item->fields == 0)) {
225 item->int_max = new_int64;
226 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
227 item->extreme_frame_in_invl = pinfo->
num;
230 if ((new_int64 < item->int_min) || (item->fields == 0)) {
231 item->int_min = new_int64;
232 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
233 item->extreme_frame_in_invl = pinfo->
num;
236 item->int_tot += new_int64;
240 new_float = (gfloat)fvalue_get_floating(&((
field_info *)gp->pdata[i])->value);
241 if ((new_float > item->float_max) || (item->fields == 0)) {
242 item->float_max = new_float;
243 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
244 item->extreme_frame_in_invl = pinfo->
num;
247 if ((new_float < item->float_min) || (item->fields == 0)) {
248 item->float_min = new_float;
249 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
250 item->extreme_frame_in_invl = pinfo->
num;
253 item->float_tot += new_float;
257 new_double = fvalue_get_floating(&((
field_info *)gp->pdata[i])->value);
258 if ((new_double > item->double_max) || (item->fields == 0)) {
259 item->double_max = new_double;
260 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
261 item->extreme_frame_in_invl = pinfo->
num;
264 if ((new_double < item->double_min) || (item->fields == 0)) {
265 item->double_min = new_double;
266 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
267 item->extreme_frame_in_invl = pinfo->
num;
270 item->double_tot += new_double;
273 case FT_RELATIVE_TIME:
277 case IOG_ITEM_UNIT_CALC_LOAD:
286 t = t * 1000000 + new_time->nsecs / 1000;
291 pt = pinfo->
rel_ts.secs * 1000000 + pinfo->
rel_ts.nsecs / 1000;
292 pt = pt % (interval * 1000);
299 load_item = &items[j];
300 load_item->time_tot.nsecs += (int) (pt * 1000);
301 if (load_item->time_tot.nsecs > 1000000000) {
302 load_item->time_tot.secs++;
303 load_item->time_tot.nsecs -= 1000000000;
311 if (t > (guint64) interval * 1000) {
312 pt = (guint64) interval * 1000;
320 if ( (new_time->secs > item->time_max.secs)
321 || ( (new_time->secs == item->time_max.secs)
322 && (new_time->nsecs > item->time_max.nsecs))
323 || (item->fields == 0)) {
324 item->time_max = *new_time;
325 if (item_unit == IOG_ITEM_UNIT_CALC_MAX) {
326 item->extreme_frame_in_invl = pinfo->
num;
329 if ( (new_time->secs<item->time_min.secs)
330 || ( (new_time->secs == item->time_min.secs)
331 && (new_time->nsecs < item->time_min.nsecs))
332 || (item->fields == 0)) {
333 item->time_min = *new_time;
334 if (item_unit == IOG_ITEM_UNIT_CALC_MIN) {
335 item->extreme_frame_in_invl = pinfo->
num;
343 if ((item_unit == IOG_ITEM_UNIT_CALC_FRAMES) ||
344 (item_unit == IOG_ITEM_UNIT_CALC_FIELDS)) {
358 g_assert_not_reached();
366 item->bytes += pinfo->fd->
pkt_len;
Definition: io_graph_item.h:36
Definition: packet_info.h:44
guint32 pkt_len
Definition: frame_data.h:56
GPtrArray * proto_get_finfo_ptr_array(const proto_tree *tree, const int id)
Definition: proto.c:9442
guint32 num
Definition: packet_info.h:48
WS_DLL_PUBLIC void nstime_set_zero(nstime_t *nstime)
Definition: nstime.c:22
nstime_t rel_ts
Definition: packet_info.h:50
enum ftenum proto_registrar_get_ftype(const int n)
Definition: proto.c:9382
Definition: epan_dissect.h:28
#define nstime_add(sum, a)
Definition: nstime.h:74