On Thu, Jul 14, 2022 at 12:24:39PM +0300, Magnus Armholt wrote:
> Strip the IEC62439-3 PRP trailer if it is present
> to support PTP over PRP.
> The implementation is very pedantic about
> trailing bytes and will indicate bad message if the
> PRP trailer bytes are present when parsing the PTP message.
> +static int has_prp_trailer(unsigned char *ptr, int cnt, int eth_hlen, int
> *trailer_len)
> +{
> + unsigned short suffix_id, lane_size_field, lsdu_size;
> + struct ptp_header* hdr;
> + int ptp_msg_len, trailer_start, padding_len;
Just some minor coding style issues. Please order the declarations by
length (reverse christmas tree) and write hdr as "*hdr" instead of
"* hdr".
> + /* try to parse like a PTP message to find out the message length */
> + if (cnt < sizeof(struct ptp_header))
> + return 0;
> +
> + hdr = (struct ptp_header*)ptr;
"ptp_header *".
> + lane_size_field = ntohs(*(unsigned short*)(ptr + (trailer_start + 2)));
Unnecessary parenthesis around "trailer_start + 2".
> + lsdu_size = (lane_size_field & 0x0FFF);
Same here.
> + if (lsdu_size != cnt)
> + return 0;
> +
> + /* Verify the suffix */
> + suffix_id = ntohs(*(unsigned short*)(ptr + (trailer_start + 4)));
And here.
> + if (suffix_id == ETH_P_PRP)
> + {
> + *trailer_len = PRP_TRAILER_LEN + padding_len;
> + return 1;
Is it necessary to return the padding length here? If I understand it
correctly it's not specific to PRP. It's just the original Ethernet
minimum length of 64 plus 6 bytes for the trailer. If you remove the
padding_len variable, the function can be simplified a bit.
--
Miroslav Lichvar
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel