Wireshark-bugs: [Wireshark-bugs] [Bug 10070] New: POWERLINK (EPL) dissector; comments on the Syn

Date: Fri, 02 May 2014 18:15:47 +0000
Bug ID 10070
Summary POWERLINK (EPL) dissector; comments on the SyncRequest and SyncResponse display
Classification Unclassified
Product Wireshark
Version Git
Hardware x86-64
OS Windows 7
Status UNCONFIRMED
Severity Minor
Priority Low
Component Dissection engine (libwireshark)
Assignee [email protected]
Reporter [email protected]

Build Information:
Version 1.11.4-257-gb5120cd (v1.11.4-rc1-257-gb5120cd from master)

Copyright 1998-2014 Gerald Combs <[email protected]> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GTK+ 2.24.14, with Cairo 1.10.2, with Pango 1.30.1, with
GLib 2.34.1, with WinPcap (4_1_3), with libz 1.2.5, with SMI 0.4.8, with c-ares
1.9.1, with Lua 5.2, without Python, with GnuTLS 2.12.18, with Gcrypt 1.4.6,
without Kerberos, with GeoIP, with PortAudio V19-devel (built May  1 2014),
with
AirPcap.

Running on 64-bit Windows 7 Service Pack 1, build 7601, with WinPcap version
4.1.3 (packet.dll version 4.1.0.2980), based on libpcap version 1.0 branch
1_0_rel0b (20091008), GnuTLS 2.12.18, Gcrypt 1.4.6, without AirPcap.
       Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz, with 8073MB of physical
memory.


Built using Microsoft Visual C++ 10.0 build 40219

Wireshark is Open Source Software released under the GNU General Public
License.

Check the man page and http://www.wireshark.org for more information.
--
Comments about the POWERLINK dissector, specifically the dissection of SoA
SyncRequest and ASnd SyncResponse frames.
Modification date of epl.c: 2014-04-14 14:47:30.
SHA-1: c68769765cae2025e167c811a748e514822e73db
Change-Id: I859597ebc957a58f659800ef63318f94e80feabf

SyncReq and SyncRes:

The sync status field is divided into four byte fields instead of a single
32-bit field, unlike the other 32-bit fields displays in the rest of the EPL
dissector (e.g. the "FeatureFlags" field in the IdentResponse dissector). The
display is correct and the text specifies that it's a single field divided into
four bytes with different bit offsets, but why not display it as a 32-bit
bitfield when it's a 32-bit bitfield?


SyncReq:

The field "SyncControl" is, as noted above, displayed as four single-byte
bitfields instead of one 32-bit bitfield. All four bytes are identified as
epl.soa.sync however. How will that affect filtering?

I don't know if it's intentional or not but the "DestMacAddress" field
(identifier epl.soa.adva.end) is displayed without the LG bit and IG bit child
nodes used in e.g. the Ethernet header in the "Destination" and "Source" fields
(identifiers eth.dst and eth.src) both have the child nodes eth.ig and eth.lg).

Suggested change of filter identifier names, both for clarity (these fields are
only present in SyncReqest frames, so adding syncreq feels appropriate and
matches the SyncResponse identifier naming) and in same cases to avoid name
collisions:

    epl.soa.sync --> epl.soa.syncreq.synccontrol
    epl.soa.adva --> epl.soa.syncreq.synccontrol.destmacaddressvalid
    epl.soa.tm --> epl.soa.syncreq.synccontrol.presfallbacktimeoutvalid
    epl.soa.mnsc --> epl.soa.syncreq.synccontrol.syncmndelaysecondvalid
    epl.soa.mnft --> epl.soa.syncreq.synccontrol.syncmndelayfirstvalid
    epl.soa.prsc --> epl.soa.syncreq.synccontrol.prestimesecondvalid
                 --> epl.soa.syncreq.synccontrol.presmodeset
    epl.soa.prft --> epl.soa.syncreq.synccontrol.prestimefirstvalid
                 --> epl.soa.syncreq.synccontrol.presmodeset
    epl.soa.prft.end --> epl.soa.syncreq.prestimefirst
    epl.soa.prsc.end --> epl.soa.syncreq.prestimesecond
    epl.soa.mnft.end --> epl.soa.syncreq.syncmndelayfirst
    epl.soa.mnsc.end --> epl.soa.syncreq.syncmndelaysecond
    epl.soa.tm.end --> epl.soa.syncreq.presfallbacktimeout


SyncRes:

The field called "SyncStatus" in the specification (EPSG DS 302-C V1.0.0) is
called "SyncResponse" here (and, as noted above, it is displayed as four
single-byte bitfields instead of one 32-bit bitfield). Additionally all four
bytes are identified as epl.asnd.syncresponse.sync. How will that affect
filtering?

A comment says "/* SyncStatus bit 24 - 31 reserved */". That is not entirely
correct - bit 31 is used (and dissected).

The field called "SyncNodeNumber" in the specification (EPSG DS 302-C V1.0.0)
is called "SyncDelayStation" here.

Suggested change of filter identifier names, both for clarity and in same cases
to avoid name collisions):

    epl.asnd.syncresponse.sync --> epl.asnd.syncres.syncstatus
    epl.asnd.syncresponse.sec.val -->
epl.asnd.syncres.syncstatus.prestimesecondvalid
    epl.asnd.syncresponse.fst.val -->
epl.asnd.syncres.syncstatus.prestimefirstvalid
    epl.asnd.syncresponse.mode --> epl.asnd.syncres.syncstatus.presmodestatus
    epl.asnd.syncresponse.delay.station --> epl.asnd.syncres.syncnodenumber
                                        --> epl.asnd.syncres.syncdelay
    epl.asnd.syncresponse.pres.fst --> epl.asnd.syncres.prestimefirst
    epl.asnd.syncresponse.pres.sec --> epl.asnd.syncres.prestimesecond


You are receiving this mail because:
  • You are watching all bug changes.