forked from osmocom/wireshark
Get rid of packet data members of header structures.
Instead, have a special macro using the size of the header structure to find the offset of the packet data. This means that: 1) you don't have to throw "-{size of data member}" into the macros that calculate the sizes of the header structures; 2) you don't have a bunch of randomly-chosen data field sizes; 3) you don't have sizes of 0, which cause problems with compilers that don't support zero-length arrays; 4) you don't have some apparently-incorrect "-{size of data member}" values (if they're correct, please fix the structure definitions). Change-Id: Iea368b83fa2d184bd6df453d51756e4749714e2c Reviewed-on: https://code.wireshark.org/review/6082 Reviewed-by: Guy Harris <guy@alum.mit.edu>
This commit is contained in:
parent
ea6f5a3c7e
commit
51e58698d2
|
@ -215,9 +215,8 @@ typedef struct nspr_pktracefull_v10
|
|||
{
|
||||
nspr_headerdev_v10_t phd; /* performance header */
|
||||
guint8 fp_RelTimeHr[4]; /* High resolution relative time */
|
||||
guint8 fp_Data[1]; /* packet data starts here */
|
||||
} nspr_pktracefull_v10_t;
|
||||
#define nspr_pktracefull_v10_s (nspr_hdev_v10_s + 4)
|
||||
#define nspr_pktracefull_v10_s ((guint32)(sizeof(nspr_pktracefull_v10_t)))
|
||||
|
||||
/* new full packet trace structure v20 */
|
||||
typedef struct nspr_pktracefull_v20
|
||||
|
@ -225,9 +224,8 @@ typedef struct nspr_pktracefull_v20
|
|||
NSPR_HEADER3B_V20(fp); /* long performance header */
|
||||
guint8 fp_DevNo; /* Network Device (NIC) number */
|
||||
guint8 fp_RelTimeHr[4]; /* High resolution relative time */
|
||||
guint8 fp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracefull_v20_t;
|
||||
#define nspr_pktracefull_v20_s ((guint32)(sizeof(nspr_pktracefull_v20_t) - 4))
|
||||
#define nspr_pktracefull_v20_s ((guint32)(sizeof(nspr_pktracefull_v20_t)))
|
||||
|
||||
/* new full packet trace structure v21 */
|
||||
typedef struct nspr_pktracefull_v21
|
||||
|
@ -237,9 +235,8 @@ typedef struct nspr_pktracefull_v21
|
|||
guint8 fp_RelTimeHr[4]; /* High resolution relative time */
|
||||
guint8 fp_PcbDevNo[4]; /* PCB devno */
|
||||
guint8 fp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 fp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracefull_v21_t;
|
||||
#define nspr_pktracefull_v21_s ((guint32)(sizeof(nspr_pktracefull_v21_t) - 4))
|
||||
#define nspr_pktracefull_v21_s ((guint32)(sizeof(nspr_pktracefull_v21_t)))
|
||||
|
||||
/* new full packet trace structure v22 */
|
||||
typedef struct nspr_pktracefull_v22
|
||||
|
@ -250,9 +247,8 @@ typedef struct nspr_pktracefull_v22
|
|||
guint8 fp_PcbDevNo[4]; /* PCB devno */
|
||||
guint8 fp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 fp_VlanTag[2]; /* vlan tag */
|
||||
guint8 fp_Data[2]; /* packet data starts here */
|
||||
} nspr_pktracefull_v22_t;
|
||||
#define nspr_pktracefull_v22_s ((guint32)(sizeof(nspr_pktracefull_v22_t) - 2))
|
||||
#define nspr_pktracefull_v22_s ((guint32)(sizeof(nspr_pktracefull_v22_t)))
|
||||
|
||||
typedef struct nspr_pktracefull_v23
|
||||
{
|
||||
|
@ -263,9 +259,8 @@ typedef struct nspr_pktracefull_v23
|
|||
guint8 fp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 fp_VlanTag[2]; /* vlan tag */
|
||||
guint8 fp_Coreid[2]; /* coreid of the packet */
|
||||
guint8 fp_Data[2]; /* packet data starts here */
|
||||
} nspr_pktracefull_v23_t;
|
||||
#define nspr_pktracefull_v23_s ((guint32)(sizeof(nspr_pktracefull_v23_t) - 2))
|
||||
#define nspr_pktracefull_v23_s ((guint32)(sizeof(nspr_pktracefull_v23_t)))
|
||||
|
||||
/* New full packet trace structure v24 for cluster tracing */
|
||||
typedef struct nspr_pktracefull_v24
|
||||
|
@ -280,9 +275,8 @@ typedef struct nspr_pktracefull_v24
|
|||
guint8 fp_srcNodeId[2]; /* source node # */
|
||||
guint8 fp_destNodeId[2]; /* destination node # */
|
||||
guint8 fp_clFlags; /* cluster flags */
|
||||
guint8 fp_Data[2]; /* packet data starts here */
|
||||
} nspr_pktracefull_v24_t;
|
||||
#define nspr_pktracefull_v24_s ((guint32)(sizeof(nspr_pktracefull_v24_t) - 4))
|
||||
#define nspr_pktracefull_v24_s ((guint32)(sizeof(nspr_pktracefull_v24_t)))
|
||||
|
||||
/* New full packet trace structure v25 for vm info tracing */
|
||||
typedef struct nspr_pktracefull_v25
|
||||
|
@ -299,11 +293,8 @@ typedef struct nspr_pktracefull_v25
|
|||
guint8 fp_clFlags; /* cluster flags */
|
||||
guint8 fp_src_vmname_len; /* vm src info */
|
||||
guint8 fp_dst_vmname_len; /* vm src info */
|
||||
guint8 fp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracefull_v25_t;
|
||||
#define nspr_pktracefull_v25_s ((guint32)(sizeof(nspr_pktracefull_v25_t) - 4))
|
||||
#define fp_src_vmname fp_Data
|
||||
#define fp_src_vmname fp_Data
|
||||
#define nspr_pktracefull_v25_s ((guint32)(sizeof(nspr_pktracefull_v25_t)))
|
||||
|
||||
/* New full packet trace structure v26 for vm info tracing */
|
||||
typedef struct nspr_pktracefull_v26
|
||||
|
@ -323,9 +314,8 @@ typedef struct nspr_pktracefull_v26
|
|||
guint8 fp_reserved;
|
||||
guint8 fp_ns_activity[4];
|
||||
guint8 fp_reserved_32[12]; /* Adding more field to reduce wireshark changes every time */
|
||||
guint8 fp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracefull_v26_t;
|
||||
#define nspr_pktracefull_v26_s ((guint32)(sizeof(nspr_pktracefull_v26_t) - 4))
|
||||
#define nspr_pktracefull_v26_s ((guint32)(sizeof(nspr_pktracefull_v26_t)))
|
||||
|
||||
/* partial packet trace structure */
|
||||
typedef struct nspr_pktracepart_v10
|
||||
|
@ -334,9 +324,8 @@ typedef struct nspr_pktracepart_v10
|
|||
guint8 pp_RelTimeHr[4]; /* High resolution relative time */
|
||||
guint8 pp_PktSizeOrg[2]; /* Original packet size */
|
||||
guint8 pp_PktOffset[2]; /* starting offset in packet */
|
||||
guint8 pp_Data[1]; /* packet data starts here */
|
||||
} nspr_pktracepart_v10_t;
|
||||
#define nspr_pktracepart_v10_s (nspr_pktracefull_v10_s + 4)
|
||||
#define nspr_pktracepart_v10_s ((guint32)(sizeof(nspr_pktracepart_v10_t)))
|
||||
|
||||
/* new partial packet trace structure */
|
||||
typedef struct nspr_pktracepart_v20
|
||||
|
@ -346,9 +335,8 @@ typedef struct nspr_pktracepart_v20
|
|||
guint8 pp_RelTimeHr[4]; /* High resolution relative time */
|
||||
guint8 pp_PktSizeOrg[2]; /* Original packet size */
|
||||
guint8 pp_PktOffset[2]; /* starting offset in packet */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v20_t;
|
||||
#define nspr_pktracepart_v20_s ((guint32)(sizeof(nspr_pktracepart_v20_t) -4))
|
||||
#define nspr_pktracepart_v20_s ((guint32)(sizeof(nspr_pktracepart_v20_t)))
|
||||
|
||||
/* new partial packet trace structure */
|
||||
typedef struct nspr_pktracepart_v21
|
||||
|
@ -360,9 +348,8 @@ typedef struct nspr_pktracepart_v21
|
|||
guint8 pp_PktOffset[2]; /* starting offset in packet */
|
||||
guint8 pp_PcbDevNo[4]; /* PCB devno */
|
||||
guint8 pp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v21_t;
|
||||
#define nspr_pktracepart_v21_s ((guint32)(sizeof(nspr_pktracepart_v21_t) -4))
|
||||
#define nspr_pktracepart_v21_s ((guint32)(sizeof(nspr_pktracepart_v21_t)))
|
||||
|
||||
/* new partial packet trace structure v22 */
|
||||
typedef struct nspr_pktracepart_v22
|
||||
|
@ -375,9 +362,8 @@ typedef struct nspr_pktracepart_v22
|
|||
guint8 pp_PcbDevNo[4]; /* PCB devno */
|
||||
guint8 pp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 pp_VlanTag[2]; /* Vlan Tag */
|
||||
guint8 pp_Data[2]; /* packet data starts here */
|
||||
} nspr_pktracepart_v22_t;
|
||||
#define nspr_pktracepart_v22_s ((guint32)(sizeof(nspr_pktracepart_v22_t) -2))
|
||||
#define nspr_pktracepart_v22_s ((guint32)(sizeof(nspr_pktracepart_v22_t)))
|
||||
|
||||
typedef struct nspr_pktracepart_v23
|
||||
{
|
||||
|
@ -390,9 +376,8 @@ typedef struct nspr_pktracepart_v23
|
|||
guint8 pp_lPcbDevNo[4]; /* link PCB devno */
|
||||
guint8 pp_VlanTag[2]; /* vlan tag */
|
||||
guint8 pp_Coreid[2]; /* Coreid of the packet */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v23_t;
|
||||
#define nspr_pktracepart_v23_s ((guint32)(sizeof(nspr_pktracepart_v23_t) -4))
|
||||
#define nspr_pktracepart_v23_s ((guint32)(sizeof(nspr_pktracepart_v23_t)))
|
||||
|
||||
/* New partial packet trace structure v24 for cluster tracing */
|
||||
typedef struct nspr_pktracepart_v24
|
||||
|
@ -409,9 +394,8 @@ typedef struct nspr_pktracepart_v24
|
|||
guint8 pp_srcNodeId[2]; /* source node # */
|
||||
guint8 pp_destNodeId[2]; /* destination node # */
|
||||
guint8 pp_clFlags; /* cluster flags */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v24_t;
|
||||
#define nspr_pktracepart_v24_s ((guint32)(sizeof(nspr_pktracepart_v24_t) -4))
|
||||
#define nspr_pktracepart_v24_s ((guint32)(sizeof(nspr_pktracepart_v24_t)))
|
||||
|
||||
/* New partial packet trace structure v25 for vm info tracing */
|
||||
typedef struct nspr_pktracepart_v25
|
||||
|
@ -430,12 +414,8 @@ typedef struct nspr_pktracepart_v25
|
|||
guint8 pp_clFlags; /* cluster flags */
|
||||
guint8 pp_src_vmname_len; /* vm info */
|
||||
guint8 pp_dst_vmname_len; /* vm info */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v25_t;
|
||||
#define nspr_pktracepart_v25_s ((guint32)(sizeof(nspr_pktracepart_v25_t) -4))
|
||||
#define pp_src_vmname pp_Data
|
||||
#define pp_dst_vmname pp_Data
|
||||
|
||||
#define nspr_pktracepart_v25_s ((guint32)(sizeof(nspr_pktracepart_v25_t)))
|
||||
|
||||
/* New full packet trace structure v30 for multipage spanning data */
|
||||
typedef struct nspr_pktracefull_v30
|
||||
|
@ -456,11 +436,8 @@ typedef struct nspr_pktracefull_v30
|
|||
guint8 fp_reserved[3];
|
||||
guint8 fp_ns_activity[4];
|
||||
guint8 fp_reserved_32[12];
|
||||
guint8 fp_Data[0]; /* packet data starts here */
|
||||
} nspr_pktracefull_v30_t;
|
||||
#define nspr_pktracefull_v30_s ((guint32)(sizeof(nspr_pktracefull_v30_t)))
|
||||
#define fp_src_vmname fp_Data
|
||||
#define fp_dst_vmname fp_Data
|
||||
|
||||
/* New partial packet trace structure v26 for vm info tracing */
|
||||
typedef struct nspr_pktracepart_v26
|
||||
|
@ -482,12 +459,14 @@ typedef struct nspr_pktracepart_v26
|
|||
guint8 pp_reserved;
|
||||
guint8 pp_ns_activity[4];
|
||||
guint8 pp_reserved_32[12]; /* Adding more field to reduce wireshark changes every time */
|
||||
guint8 pp_Data[4]; /* packet data starts here */
|
||||
} nspr_pktracepart_v26_t;
|
||||
#define nspr_pktracepart_v26_s ((guint32)(sizeof(nspr_pktracepart_v26_t) -4))
|
||||
#define nspr_pktracepart_v26_s ((guint32)(sizeof(nspr_pktracepart_v26_t)))
|
||||
|
||||
#define myoffsetof(type,fieldname) (&(((type*)0)->fieldname))
|
||||
|
||||
#define __TNDO(phdr,enumprefix,structname,hdrname)\
|
||||
guint8 enumprefix##_##hdrname##_offset = (guint8)sizeof(nspr_##structname##_t);
|
||||
|
||||
#define __TNO(phdr,enumprefix,structprefix,structname,hdrname,structfieldname) \
|
||||
guint8 enumprefix##_##hdrname##_offset = (guint8)GPOINTER_TO_INT(myoffsetof(nspr_##structname##_t,structprefix##_##structfieldname));
|
||||
|
||||
|
@ -505,7 +484,7 @@ typedef struct nspr_pktracepart_v26
|
|||
__TNV1L(phdr,enumprefix,structprefix,structname,dir,phd.ph_RecordType)\
|
||||
__TNV1O(phdr,enumprefix,structprefix,structname,nicno,phd.ph_DevNo)\
|
||||
__TNV1L(phdr,enumprefix,structprefix,structname,nicno,phd.ph_DevNo)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,eth,Data)
|
||||
__TNDO(phdr,enumprefix,structname,eth)
|
||||
|
||||
#define TRACE_FULL_V10_REC_LEN_OFF(phdr,enumprefix,structprefix,structname) \
|
||||
(phdr)->len = pletoh16(&(fp)->nsprRecordSize);\
|
||||
|
@ -524,7 +503,7 @@ typedef struct nspr_pktracepart_v26
|
|||
__TNL(phdr,enumprefix,structprefix,structname,dir,RecordType)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,nicno,DevNo)\
|
||||
__TNL(phdr,enumprefix,structprefix,structname,nicno,DevNo)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,eth,Data)
|
||||
__TNDO(phdr,enumprefix,structname,eth)
|
||||
|
||||
#define TRACE_V21_REC_LEN_OFF(phdr,enumprefix,structprefix,structname) \
|
||||
TRACE_V20_REC_LEN_OFF(phdr,enumprefix,structprefix,structname)\
|
||||
|
@ -549,7 +528,7 @@ typedef struct nspr_pktracepart_v26
|
|||
TRACE_V24_REC_LEN_OFF(phdr,enumprefix,structprefix,structname)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,src_vmname_len,src_vmname_len)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,dst_vmname_len,dst_vmname_len)\
|
||||
__TNO(phdr,enumprefix,structprefix,structname,data,Data)
|
||||
__TNDO(phdr,enumprefix,structname,data)
|
||||
|
||||
#define TRACE_V26_REC_LEN_OFF(phdr,enumprefix,structprefix,structname) \
|
||||
TRACE_V25_REC_LEN_OFF(phdr,enumprefix,structprefix,structname)\
|
||||
|
@ -579,6 +558,7 @@ typedef struct nspr_pktracepart_v26
|
|||
#undef __TNV1O
|
||||
#undef __TNV1L
|
||||
#undef __TNO
|
||||
#undef __TNDO
|
||||
#undef __TNL
|
||||
|
||||
|
||||
|
@ -902,6 +882,9 @@ static gboolean nstrace_set_start_time(wtap *wth)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
#define __TNDO(phdr,enumprefix,structname,hdrname)\
|
||||
(phdr)->pseudo_header.nstr.hdrname##_offset = enumprefix##_##hdrname##_offset;
|
||||
|
||||
#define __TNO(phdr,enumprefix,structprefix,structname,hdrname,structfieldname) \
|
||||
(phdr)->pseudo_header.nstr.hdrname##_offset = enumprefix##_##hdrname##_offset;
|
||||
|
||||
|
|
Loading…
Reference in New Issue