Store the packet encapsulation type as gint8. Saves 3 bytes per packet
authorkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Mon, 7 Sep 2009 13:54:46 +0000 (13:54 +0000)
committerkrj <krj@f5534014-38df-0310-8fa8-9805f1628bb7>
Mon, 7 Sep 2009 13:54:46 +0000 (13:54 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@29767 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-frame.c
epan/frame_data.h
file.c
rawshark.c
tshark.c

index edb17f8814f6c278adcd54e765773d564c328c70..433208ac57e3cbeb8b69a60b44aa088e05469b54 100644 (file)
@@ -326,7 +326,7 @@ dissect_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
                 tvb, pinfo, parent_tree)) {
 
                                col_set_str(pinfo->cinfo, COL_PROTOCOL, "UNKNOWN");
-                               col_add_fstr(pinfo->cinfo, COL_INFO, "WTAP_ENCAP = %u",
+                               col_add_fstr(pinfo->cinfo, COL_INFO, "WTAP_ENCAP = %d",
                                    pinfo->fd->lnk_t);
                        call_dissector(data_handle,tvb, pinfo, parent_tree);
                }
index 69b551b2e4c0655484f23af9f322a8bf13d9cf46..354f8d0e2f4539999709c11146f9af3e81dafc49 100644 (file)
@@ -44,7 +44,8 @@ typedef struct _frame_data {
   guint32      pkt_len;     /* Packet length */
   guint32      cap_len;     /* Amount actually captured */
   guint32      cum_bytes;   /* Cumulative bytes into the capture */
-  int          lnk_t;       /* Per-packet encapsulation/data-link type */
+  gint64       file_off;    /* File offset */
+  gint8        lnk_t;       /* Per-packet encapsulation/data-link type */
   struct {
        unsigned int passed_dfilter     : 1; /* 1 = display, 0 = no display */
        unsigned int encoding           : 2; /* Character encoding (ASCII, EBCDIC...) */
@@ -52,13 +53,15 @@ typedef struct _frame_data {
        unsigned int marked                     : 1; /* 1 = marked by user, 0 = normal */
        unsigned int ref_time           : 1; /* 1 = marked as a reference time frame, 0 = normal */
   } flags;
+
   void *color_filter;       /* Per-packet matching color_filter_t object */
+
   nstime_t     abs_ts;      /* Absolute timestamp */
   nstime_t     rel_ts;      /* Relative timestamp (yes, it can be negative) */
   nstime_t     del_dis_ts;  /* Delta timestamp to previous displayed frame (yes, it can be negative) */
   nstime_t     del_cap_ts;  /* Delta timestamp to previous captured frame (yes, it can be negative) */
-  gint64       file_off;    /* File offset */
-  gchar        **col_text;  /* The column text for some columns, see colum_utils */
+
+  gchar        **col_text;    /* The column text for some columns, see colum_utils */
   guint        *col_text_len; /* The length of the column text strings in 'col_text' */
 } frame_data;
 
diff --git a/file.c b/file.c
index dc722386b64cfb023e13ab78afb162f1a5724b48..76810c9038eaae4c87b56a885fc2ef2e8480fe1f 100644 (file)
--- a/file.c
+++ b/file.c
@@ -1259,7 +1259,9 @@ read_packet(capture_file *cf, dfilter_t *dfcode,
   fdata->pkt_len  = phdr->len;
   fdata->cap_len  = phdr->caplen;
   fdata->file_off = offset;
-  fdata->lnk_t = phdr->pkt_encap;
+  /* To save some memory, we coarcese it into a gint8 */
+  g_assert(phdr->pkt_encap <= G_MAXINT8);
+  fdata->lnk_t = (gint8) phdr->pkt_encap;
   fdata->flags.encoding = CHAR_ASCII;
   fdata->flags.visited = 0;
   fdata->flags.marked = 0;
index 3249e4f326e798301b1b5a58ada9e8de2e5c2df2..e22fc2999ed0efde5dfc702cd22f5c537f57e0b1 100644 (file)
@@ -1019,7 +1019,9 @@ fill_in_fdata(frame_data *fdata, capture_file *cf,
   fdata->cum_bytes  = cum_bytes;
   fdata->cap_len = phdr->caplen;
   fdata->file_off = offset;
-  fdata->lnk_t = phdr->pkt_encap;
+  /* To save some memory, we coarcese it into a gint8 */
+  g_assert(phdr->pkt_encap <= G_MAXINT8);
+  fdata->lnk_t = (gint8) phdr->pkt_encap;
   fdata->abs_ts.secs = phdr->ts.secs;
   fdata->abs_ts.nsecs = phdr->ts.nsecs;
   fdata->flags.passed_dfilter = 0;
index 05194a1091739185712a79460bbf3d0acc8771be..05eb2274314a2c28834bb162532bfbb357f6e7b1 100644 (file)
--- a/tshark.c
+++ b/tshark.c
@@ -2394,7 +2394,9 @@ fill_in_fdata(frame_data *fdata, capture_file *cf,
   fdata->cum_bytes  = cum_bytes;
   fdata->cap_len = phdr->caplen;
   fdata->file_off = offset;
-  fdata->lnk_t = phdr->pkt_encap;
+  /* To save some memory, we coarcese it into a gint8 */
+  g_assert(phdr->pkt_encap <= G_MAXINT8);
+  fdata->lnk_t = (gint8) phdr->pkt_encap;
   fdata->abs_ts.secs = phdr->ts.secs;
   fdata->abs_ts.nsecs = phdr->ts.nsecs;
   fdata->flags.passed_dfilter = 0;