--- Begin Message ---
Hi Guy,

> BTW, having just implemented SLL2 support in Wireshark, the layout of the 
> header really doesn't work as well as I'd like with ARPHRD_NETLINK packets.

> I'd prefer something like

> struct header {
>       uint16_t hatype;                /* link-layer address type */
>       uint8_t  pkttype;               /* packet type */
>       uint8_t  halen;                 /* link-layer address length */
>       uint8_t  addr[SLL_ADDRLEN];     /* link-layer address */
>       int32_t  if_index;              /* 1-based interface index */
>       uint16_t hatype_specific;       /* dependent on sll3_hatype */
>       uint16_t protocol;              /* protocol */
> };

> because

> 1) It puts the protocol field *after* the hatype field, and right before the 
> payload, so that, for packets with an hatype of ARPHRD_NETLINK, we can treat 
> everything up to the if_index field as the cooked-mode header, and have the 
> dissector for ARPHRD_NETLINK-over-SLL treat the hatype_specific and protocol 
> fields as fields for *it* to dissect.  For that ARPHRD_ type, the protocol is 
> a Netlink protocol type, so it really should be analyzed by the code that 
> understands Netlink messages.

> 2) It provides a field to handle various annoyances in the way that packets 
> are provided to PF_PACKET sockets.  In particular, Netlink messages are in 
> the host byte order of the machine doing the capturing, so, for 
> ARPHRD_NETLINK, we can have libpcap put the value 0x0123 in that field, in 
> *host* byte order, so the code that processes the packets can just see 
> whether that field's value is 0x0123 or 0x3210 and, based on that, determine 
> whether the messages need to be byte-swapped.  (Remember, somebody might 
> capture Netlink traffic on a machine with one byte order but read the capture 
> on a machine with the opposite byte order.)

> Is SLL2 sufficiently established that we'd have to introduce an SLL3 type, or 
> can we just change SLL2 at this point?

Thanks for the explanation. As I wrote at the ticket [1] I'd prefer to redefine
LINKTYPE_LINUX_SLL2/DLT_LINUX_SLL2. Having LINKTYPE_LINUX_SLL3/DLT_LINUX_SLL3,
when LINKTYPE_LINUX_SLL2/DLT_LINUX_SLL2 is not usable does not make much sense
to me. Hope it wasn't used much as it wasn't the default.

Kind regards,
Petr

[1] https://github.com/the-tcpdump-group/tcpdump-htdocs/pull/3

--- End Message ---
_______________________________________________
tcpdump-workers mailing list
tcpdump-workers@lists.tcpdump.org
https://lists.sandelman.ca/mailman/listinfo/tcpdump-workers

Reply via email to