Wireshark 4.5.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
atap_data_model.h
Go to the documentation of this file.
1
10#ifndef ATAP_DATA_MODEL_H
11#define ATAP_DATA_MODEL_H
12
13#include "config.h"
14
15#include <epan/tap.h>
16#include <epan/conversation.h>
18
19#include <QAbstractListModel>
20
32class ATapDataModel : public QAbstractListModel
33{
34 Q_OBJECT
35public:
36
37 enum {
38 DISPLAY_FILTER = Qt::UserRole,
39 UNFORMATTED_DISPLAYDATA,
40#ifdef HAVE_MAXMINDDB
41 GEODATA_AVAILABLE,
42 GEODATA_LOOKUPTABLE,
43 GEODATA_ADDRESS,
44#endif
45 TIMELINE_DATA,
46 ENDPOINT_DATATYPE,
47 PROTO_ID,
48 CONVERSATION_ID,
49 ROW_IS_FILTERED,
50 DATA_ADDRESS_TYPE,
51 DATA_IPV4_INTEGER,
52 DATA_IPV6_LIST,
53 };
54
55 typedef enum {
56 DATAMODEL_ENDPOINT,
57 DATAMODEL_CONVERSATION,
58 DATAMODEL_UNKNOWN
59 } dataModelType;
60
61 conv_hash_t hash_;
62
76 explicit ATapDataModel(dataModelType type, int protoId, QString filter, QObject *parent = nullptr);
77 virtual ~ATapDataModel();
78
87 int rowCount(const QModelIndex &parent = QModelIndex()) const;
88
89 virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0;
90 virtual QVariant headerData(int section, Qt::Orientation orientation = Qt::Horizontal, int role = Qt::DisplayRole) const = 0;
91 virtual QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const = 0;
92
98 QString tap() const;
99
105 int protoId() const;
106
114 void setFilter(QString filter);
115
121 QString filter() const;
122
129 bool resolveNames() const;
130
136 void setResolveNames(bool resolve);
137
147 bool allowsNameResolution() const;
148
154 void useAbsoluteTime(bool absolute);
155
161 void useNanosecondTimestamps(bool nanoseconds);
162
169 bool portsAreHidden() const;
170
177 bool showTotalColumn() const;
178
188 bool enableTap();
189
193 void disableTap();
194
200 dataModelType modelType() const;
201
202 conv_hash_t * hash();
203
207 void updateFlags(unsigned flag);
208
209#ifdef HAVE_MAXMINDDB
216 bool hasGeoIPData();
217#endif
218
219signals:
220 void tapListenerChanged(bool enable);
221
222protected:
223
224 static void tapReset(void *tapdata);
225 static void tapDraw(void *tap_data);
226
227 virtual tap_packet_cb conversationPacketHandler();
228
229 void resetData();
230 void updateData(GArray * data);
231
232 dataModelType _type;
233 GArray * storage_;
234 QString _filter;
235
236 bool _absoluteTime;
237 bool _nanoseconds;
238 bool _resolveNames;
239 bool _disableTap;
240
241 double _minRelStartTime;
242 double _maxRelStopTime;
243
244 unsigned _tapFlags;
245
246 register_ct_t* registerTable() const;
247
248private:
249 int _protoId;
250
251};
252
254{
255 Q_OBJECT
256public:
257
258 typedef enum
259 {
260 ENDP_COLUMN_ADDR,
261 ENDP_COLUMN_PORT,
262 ENDP_COLUMN_PACKETS,
263 ENDP_COLUMN_BYTES,
264 ENDP_COLUMN_PACKETS_TOTAL,
265 ENDP_COLUMN_BYTES_TOTAL,
266 ENDP_COLUMN_PKT_AB,
267 ENDP_COLUMN_BYTES_AB,
268 ENDP_COLUMN_PKT_BA,
269 ENDP_COLUMN_BYTES_BA,
270 ENDP_NUM_COLUMNS,
271 ENDP_COLUMN_GEO_COUNTRY = ENDP_NUM_COLUMNS,
272 ENDP_COLUMN_GEO_CITY,
273 ENDP_COLUMN_GEO_LATITUDE,
274 ENDP_COLUMN_GEO_LONGITUDE,
275 ENDP_COLUMN_GEO_AS_NUM,
276 ENDP_COLUMN_GEO_AS_ORG,
277 ENDP_NUM_GEO_COLUMNS
278 } endpoint_column_type_e;
279
280 explicit EndpointDataModel(int protoId, QString filter, QObject *parent = nullptr);
281
282 int columnCount(const QModelIndex &parent = QModelIndex()) const;
283 QVariant headerData(int section, Qt::Orientation orientation = Qt::Horizontal, int role = Qt::DisplayRole) const;
284 QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const;
285
286};
287
289{
290 Q_OBJECT
291public:
292
293 typedef enum {
294 CONV_COLUMN_SRC_ADDR,
295 CONV_COLUMN_SRC_PORT,
296 CONV_COLUMN_DST_ADDR,
297 CONV_COLUMN_DST_PORT,
298 CONV_COLUMN_PACKETS,
299 CONV_COLUMN_BYTES,
300 CONV_COLUMN_CONV_ID,
301 CONV_COLUMN_PACKETS_TOTAL,
302 CONV_COLUMN_BYTES_TOTAL,
303 CONV_COLUMN_PKT_AB,
304 CONV_COLUMN_BYTES_AB,
305 CONV_COLUMN_PKT_BA,
306 CONV_COLUMN_BYTES_BA,
307 CONV_COLUMN_START,
308 CONV_COLUMN_DURATION,
309 CONV_COLUMN_BPS_AB,
310 CONV_COLUMN_BPS_BA,
311 CONV_NUM_COLUMNS,
312 CONV_INDEX_COLUMN = CONV_NUM_COLUMNS
313 } conversation_column_type_e;
314
315 typedef enum {
316 CONV_TCP_EXT_COLUMN_A = CONV_INDEX_COLUMN,
317 CONV_TCP_EXT_NUM_COLUMNS,
318 CONV_TCP_EXT_INDEX_COLUMN = CONV_TCP_EXT_NUM_COLUMNS
319 } conversation_tcp_ext_column_type_e;
320
321 explicit ConversationDataModel(int protoId, QString filter, QObject *parent = nullptr);
322
323 int columnCount(const QModelIndex &parent = QModelIndex()) const;
324 QVariant headerData(int section, Qt::Orientation orientation = Qt::Horizontal, int role = Qt::DisplayRole) const;
325 QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const;
326
327 void doDataUpdate();
328
329 conv_item_t * itemForRow(int row);
330
337 bool showConversationId(int row = 0) const;
338
339};
340
341#endif // ATAP_DATA_MODEL_H
DataModel for tap user data.
Definition atap_data_model.h:33
bool showTotalColumn() const
A total column is filled.
Definition atap_data_model.cpp:332
bool resolveNames() const
Is the model set to resolve names in address and ports columns.
Definition atap_data_model.cpp:239
void useAbsoluteTime(bool absolute)
Use absolute time for any column supporting it.
Definition atap_data_model.cpp:280
bool enableTap()
Enable tapping in this model.
Definition atap_data_model.cpp:106
QString tap() const
Returns the name for the tap being used.
Definition atap_data_model.cpp:79
bool allowsNameResolution() const
Does the model allow names to be resolved.
Definition atap_data_model.cpp:254
dataModelType modelType() const
Return the model type.
Definition atap_data_model.cpp:322
void setFilter(QString filter)
Set the filter string.
Definition atap_data_model.cpp:300
void setResolveNames(bool resolve)
Enable or disable if names should be resolved.
Definition atap_data_model.cpp:244
void disableTap()
Disable the tapping for this model.
Definition atap_data_model.cpp:133
void useNanosecondTimestamps(bool nanoseconds)
Use nanosecond timestamps if requested.
Definition atap_data_model.cpp:290
void updateFlags(unsigned flag)
Update the flags.
Definition atap_data_model.cpp:142
int rowCount(const QModelIndex &parent=QModelIndex()) const
Number of rows under the given parent in this model, which is the total number of rows for the empty ...
Definition atap_data_model.cpp:156
bool portsAreHidden() const
Are ports hidden for this model.
Definition atap_data_model.cpp:327
int protoId() const
The protocol id for the tap.
Definition atap_data_model.cpp:74
QString filter() const
Return a filter set for the model.
Definition atap_data_model.cpp:317
Definition atap_data_model.h:289
bool showConversationId(int row=0) const
Show the conversation id if available.
Definition atap_data_model.cpp:884
Definition atap_data_model.h:254
Definition conversation_table.h:53
Definition conversation_table.h:121
Definition conversation_table.c:24