Hi,
I already had my reservations against the construction of the PW dissectors, and
this only adds to it.
What I would like to see is the abolishment of the pwc_packet_properties_t type
altogether. This is _not_ an enum.
typedef enum {
PWC_CW_BAD_BITS03 = 1 << 0
,PWC_CW_BAD_PAYLEN_LT_0 = 1 << 1
,PWC_CW_BAD_PAYLEN_GT_PACKET = 1 << 2
,PWC_CW_BAD_LEN_MUST_BE_0 = 1 << 3
,PWC_CW_BAD_FRAG = 1 << 4
,PWC_CW_BAD_RSV = 1 << 5
,PWC_CW_BAD_FLAGS = 1 << 8
,PWC_CW_BAD_PAYLEN_LE_0 = 1 << 9
,PWC_CW_BAD_PADDING_NE_0 = 1 << 10
,PWC_ANYOF_CW_BAD = PWC_CW_BAD_BITS03
+ PWC_CW_BAD_PAYLEN_LT_0
+ PWC_CW_BAD_PAYLEN_GT_PACKET
+ PWC_CW_BAD_LEN_MUST_BE_0
+ PWC_CW_BAD_FRAG
+ PWC_CW_BAD_RSV
+ PWC_CW_BAD_FLAGS
+ PWC_CW_BAD_PAYLEN_LE_0
+ PWC_CW_BAD_PADDING_NE_0
,PWC_CW_SUSPECT_LM = 1 << 6
,PWC_ANYOF_CW_SUSPECT = PWC_CW_SUSPECT_LM
,PWC_PAY_SIZE_BAD = 1 << 7
}
pwc_packet_properties_t;
It's replacement is a list of #define's or const int's (to stay in C++ realm)
#define PWC_CW_BAD_BITS03 (1 << 0)
#define PWC_CW_BAD_PAYLEN_LT_0 (1 << 1)
#define PWC_CW_BAD_PAYLEN_GT_PACKET (1 << 2)
#define PWC_CW_BAD_LEN_MUST_BE_0 (1 << 3)
#define PWC_CW_BAD_FRAG (1 << 4)
#define PWC_CW_BAD_RSV (1 << 5)
#define PWC_CW_SUSPECT_LM (1 << 6)
#define PWC_PAY_SIZE_BAD (1 << 7)
#define PWC_CW_BAD_FLAGS (1 << 8)
#define PWC_CW_BAD_PAYLEN_LE_0 (1 << 9)
#define PWC_CW_BAD_PADDING_NE_0 (1 << 10)
#define PWC_ANYOF_CW_BAD (PWC_CW_BAD_BITS03 |
PWC_CW_BAD_PAYLEN_LT_0 |
PWC_CW_BAD_PAYLEN_GT_PACKET |
PWC_CW_BAD_LEN_MUST_BE_0 |
PWC_CW_BAD_FRAG |
PWC_CW_BAD_RSV |
PWC_CW_BAD_FLAGS |
PWC_CW_BAD_PAYLEN_LE_0 |
PWC_CW_BAD_PADDING_NE_0)
#define PWC_ANYOF_CW_SUSPECT PWC_CW_SUSPECT_LM
This would impact packet-pw-cesopsn.c, packet-pw-satop.c in a similar way as it
did packet-pw-atm.c
Thanks,
Jaap
On 02/28/2013 09:57 PM, Ed Beroset wrote:
> As mentioned in the subject line, I've added Bug 8416 - "remove C++
> incompatibilities from packet-pw-atm.c" with the associated patch. Doing a
> little forensic work on the C++ incompatibilities still present in the code
> base, here are the types of issues of the 4919 "c++-incompat" lines in a
> compilation of the latest source using gcc on a Linux box (Fedora 17) (before
> this patch):
>
> type count percent
> implicit_casts 4013 81.58%
> keyword_use 634 12.89%
> enum_conversion 197 4.00%
> uninit_const 7 0.14%
> field_typedef 5 0.10%
> special_operator 3 0.06%
> incompat_ptr 2 0.04%
> other 58 1.18%
>
> It's clear that the vast majority of these (over 98%) are of only three
> different kinds which are mostly trivial fixes. I do want to point out,
> however, that the way I chose to resolve the enum_conversion complaint was to
> change the type of one member of a struct from an enum type to an int. The
> longer version of the rationale is in the bug report. If we find this kind
> of patch acceptable, and desirable, I'll do more.
>
> https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416
>
> Ed
>
___________________________________________________________________________
Sent via: Wireshark-dev mailing list <[email protected]>
Archives: http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
mailto:[email protected]?subject=unsubscribe