Remove interface_id, pack_flags from frame_data structure.
This patch assumes that wtap_phdr interface_id, pack_flags both from initial read and seek read will contain same values. Please fix if it's not. svn path=/trunk/; revision=51041
This commit is contained in:
parent
564c6234fc
commit
9bb17b7b2b
|
@ -271,16 +271,16 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
|
|||
proto_item_append_text(ti, " (%u bits)",
|
||||
cap_len * 8);
|
||||
}
|
||||
if (pinfo->fd->flags.has_if_id) {
|
||||
if (pinfo->phdr->presence_flags & WTAP_HAS_INTERFACE_ID) {
|
||||
proto_item_append_text(ti, " on interface %u",
|
||||
pinfo->fd->interface_id);
|
||||
pinfo->phdr->interface_id);
|
||||
}
|
||||
if (pinfo->fd->flags.has_pack_flags) {
|
||||
if (pinfo->fd->pack_flags & 0x00000001) {
|
||||
if (pinfo->phdr->presence_flags & WTAP_HAS_PACK_FLAGS) {
|
||||
if (pinfo->phdr->pack_flags & 0x00000001) {
|
||||
proto_item_append_text(ti, " (inbound)");
|
||||
pinfo->p2p_dir = P2P_DIR_RECV;
|
||||
}
|
||||
if (pinfo->fd->pack_flags & 0x00000002) {
|
||||
if (pinfo->phdr->pack_flags & 0x00000002) {
|
||||
proto_item_append_text(ti, " (outbound)");
|
||||
pinfo->p2p_dir = P2P_DIR_SENT;
|
||||
}
|
||||
|
@ -288,33 +288,33 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
|
|||
|
||||
fh_tree = proto_item_add_subtree(ti, ett_frame);
|
||||
|
||||
if (pinfo->fd->flags.has_if_id && proto_field_is_referenced(tree, hf_frame_interface_id)) {
|
||||
const char *interface_name = epan_get_interface_name(pinfo->epan, pinfo->fd->interface_id);
|
||||
if (pinfo->phdr->presence_flags & WTAP_HAS_INTERFACE_ID && proto_field_is_referenced(tree, hf_frame_interface_id)) {
|
||||
const char *interface_name = epan_get_interface_name(pinfo->epan, pinfo->phdr->interface_id);
|
||||
|
||||
if (interface_name)
|
||||
proto_tree_add_uint_format_value(fh_tree, hf_frame_interface_id, tvb, 0, 0, pinfo->fd->interface_id, "%u (%s)", pinfo->fd->interface_id, interface_name);
|
||||
proto_tree_add_uint_format_value(fh_tree, hf_frame_interface_id, tvb, 0, 0, pinfo->phdr->interface_id, "%u (%s)", pinfo->phdr->interface_id, interface_name);
|
||||
else
|
||||
proto_tree_add_uint(fh_tree, hf_frame_interface_id, tvb, 0, 0, pinfo->fd->interface_id);
|
||||
proto_tree_add_uint(fh_tree, hf_frame_interface_id, tvb, 0, 0, pinfo->phdr->interface_id);
|
||||
}
|
||||
|
||||
if (pinfo->fd->flags.has_pack_flags) {
|
||||
if (pinfo->phdr->presence_flags & WTAP_HAS_PACK_FLAGS) {
|
||||
proto_tree *flags_tree;
|
||||
proto_item *flags_item;
|
||||
|
||||
flags_item = proto_tree_add_uint(fh_tree, hf_frame_pack_flags, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
flags_item = proto_tree_add_uint(fh_tree, hf_frame_pack_flags, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
flags_tree = proto_item_add_subtree(flags_item, ett_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_direction, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_reception_type, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_fcs_length, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_reserved, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_crc_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_packet_too_long_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_packet_too_short_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_inter_frame_gap_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_unaligned_frame_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_start_frame_delimiter_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_preamble_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_symbol_error, tvb, 0, 0, pinfo->fd->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_direction, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_reception_type, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_fcs_length, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_uint(flags_tree, hf_frame_pack_reserved, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_crc_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_packet_too_long_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_packet_too_short_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_wrong_inter_frame_gap_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_unaligned_frame_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_start_frame_delimiter_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_preamble_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
proto_tree_add_boolean(flags_tree, hf_frame_pack_symbol_error, tvb, 0, 0, pinfo->phdr->pack_flags);
|
||||
}
|
||||
|
||||
proto_tree_add_int(fh_tree, hf_frame_wtap_encap, tvb, 0, 0, pinfo->fd->lnk_t);
|
||||
|
|
|
@ -263,7 +263,6 @@ frame_data_init(frame_data *fdata, guint32 num,
|
|||
{
|
||||
fdata->pfd = NULL;
|
||||
fdata->num = num;
|
||||
fdata->interface_id = phdr->interface_id;
|
||||
fdata->pkt_len = phdr->len;
|
||||
fdata->cum_bytes = cum_bytes + phdr->len;
|
||||
fdata->cap_len = phdr->caplen;
|
||||
|
@ -272,7 +271,6 @@ frame_data_init(frame_data *fdata, guint32 num,
|
|||
/* To save some memory, we coerce it into a gint16 */
|
||||
g_assert(phdr->pkt_encap <= G_MAXINT16);
|
||||
fdata->lnk_t = (gint16) phdr->pkt_encap;
|
||||
fdata->pack_flags = phdr->pack_flags;
|
||||
fdata->flags.passed_dfilter = 0;
|
||||
fdata->flags.dependent_of_displayed = 0;
|
||||
fdata->flags.encoding = PACKET_CHAR_ENC_CHAR_ASCII;
|
||||
|
@ -281,8 +279,6 @@ frame_data_init(frame_data *fdata, guint32 num,
|
|||
fdata->flags.ref_time = 0;
|
||||
fdata->flags.ignored = 0;
|
||||
fdata->flags.has_ts = (phdr->presence_flags & WTAP_HAS_TS) ? 1 : 0;
|
||||
fdata->flags.has_if_id = (phdr->presence_flags & WTAP_HAS_INTERFACE_ID) ? 1 : 0;
|
||||
fdata->flags.has_pack_flags = (phdr->presence_flags & WTAP_HAS_PACK_FLAGS) ? 1 : 0;
|
||||
fdata->color_filter = NULL;
|
||||
fdata->abs_ts.secs = phdr->ts.secs;
|
||||
fdata->abs_ts.nsecs = phdr->ts.nsecs;
|
||||
|
|
|
@ -58,8 +58,6 @@ typedef enum {
|
|||
typedef struct _frame_data {
|
||||
GSList *pfd; /**< Per frame proto data */
|
||||
guint32 num; /**< Frame number */
|
||||
guint32 interface_id; /**< identifier of the interface. */
|
||||
guint32 pack_flags; /**< Packet Flags */
|
||||
guint32 pkt_len; /**< Packet length */
|
||||
guint32 cap_len; /**< Amount actually captured */
|
||||
guint32 cum_bytes; /**< Cumulative bytes into the capture */
|
||||
|
@ -75,8 +73,6 @@ typedef struct _frame_data {
|
|||
unsigned int ref_time : 1; /**< 1 = marked as a reference time frame, 0 = normal */
|
||||
unsigned int ignored : 1; /**< 1 = ignore this frame, 0 = normal */
|
||||
unsigned int has_ts : 1; /**< 1 = has time stamp, 0 = no time stamp */
|
||||
unsigned int has_if_id : 1; /**< 1 = has interface ID, 0 = no interface ID */
|
||||
unsigned int has_pack_flags : 1; /**< 1 = has packet flags, 0 = no packet flags */
|
||||
} flags;
|
||||
|
||||
const void *color_filter; /**< Per-packet matching color_filter_t object */
|
||||
|
|
8
file.c
8
file.c
|
@ -3996,9 +3996,9 @@ save_packet(capture_file *cf _U_, frame_data *fdata,
|
|||
hdr.presence_flags = 0;
|
||||
if (fdata->flags.has_ts)
|
||||
hdr.presence_flags |= WTAP_HAS_TS;
|
||||
if (fdata->flags.has_if_id)
|
||||
if (phdr->presence_flags & WTAP_HAS_INTERFACE_ID)
|
||||
hdr.presence_flags |= WTAP_HAS_INTERFACE_ID;
|
||||
if (fdata->flags.has_pack_flags)
|
||||
if (phdr->presence_flags & WTAP_HAS_PACK_FLAGS)
|
||||
hdr.presence_flags |= WTAP_HAS_PACK_FLAGS;
|
||||
hdr.ts.secs = fdata->abs_ts.secs;
|
||||
hdr.ts.nsecs = fdata->abs_ts.nsecs;
|
||||
|
@ -4006,9 +4006,9 @@ save_packet(capture_file *cf _U_, frame_data *fdata,
|
|||
hdr.len = fdata->pkt_len;
|
||||
hdr.pkt_encap = fdata->lnk_t;
|
||||
/* pcapng */
|
||||
hdr.interface_id = fdata->interface_id; /* identifier of the interface. */
|
||||
hdr.interface_id = phdr->interface_id; /* identifier of the interface. */
|
||||
/* options */
|
||||
hdr.pack_flags = fdata->pack_flags;
|
||||
hdr.pack_flags = phdr->pack_flags;
|
||||
hdr.opt_comment = fdata->opt_comment; /* NULL if not available */
|
||||
/* pseudo */
|
||||
hdr.pseudo_header = phdr->pseudo_header;
|
||||
|
|
Loading…
Reference in New Issue