On Fri, Dec 2, 2011 at 5:48 PM, Stephen Fisher <[email protected]> wrote: > On Fri, Dec 02, 2011 at 04:21:15PM +0100, Yegor Yefremov wrote: > >> I'm writing a CANOpen dissector >> (http://en.wikipedia.org/wiki/CANopen). The dissector itself is almost >> ready. The main problem I have is, how do I hook this dissector on to >> SocketCan one? CAN has no ports, so I can't decide on this basis. My >> suggestion were to create a drop-down list in SocketCan dissector to >> select high-level CAN protocol (like CANOpen, DeviceNet etc.). What do >> you think about this? > > Does the SocketCan protocol have any indication which protocol is next > (CANOpen, DeviceNet, etc)? If so, you can use the call_dissector() to > pass a tvbuff to the next dissector (from SocketCan to CANOpen for > example). You would "break off" the rest of the packet that SocketCan > is dissecting with something like tvb_new_subset() which creates a new > tvbuff out of a backing tvbuff based on certain offset and length.
No SocketCan has no notion of the underlying protocol. AFAIK SocketCAN gets one CAN frame per read from the kernel. The CAN frame consists of an ID field with some flags (4 bytes), data length (1 byte) and the data itself (max. 8 bytes). Each protocol is using these fields for its purpose, but there are (could be) same CAN frames in each protocol. So your play field is very limited. That's why I'm thinking about making an option to choose the desired high level protocol in socketcan settings. Yegor ___________________________________________________________________________ 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
