net: flow_dissector: Parse PTP L2 packet header

Add support for parsing PTP L2 packet header. Such packet consists
of an L2 header (with ethertype of ETH_P_1588), PTP header, body
and an optional suffix.

Signed-off-by: Eran Ben Elisha <eranbe@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Eran Ben Elisha 2021-01-12 21:07:13 +02:00 committed by Jakub Kicinski
parent 7185425582
commit 4f1cc51f34
1 changed files with 16 additions and 0 deletions

View File

@ -23,6 +23,7 @@
#include <linux/if_ether.h>
#include <linux/mpls.h>
#include <linux/tcp.h>
#include <linux/ptp_classify.h>
#include <net/flow_dissector.h>
#include <scsi/fc/fc_fcoe.h>
#include <uapi/linux/batadv_packet.h>
@ -1251,6 +1252,21 @@ proto_again:
&proto, &nhoff, hlen, flags);
break;
case htons(ETH_P_1588): {
struct ptp_header *hdr, _hdr;
hdr = __skb_header_pointer(skb, nhoff, sizeof(_hdr), data,
hlen, &_hdr);
if (!hdr) {
fdret = FLOW_DISSECT_RET_OUT_BAD;
break;
}
nhoff += ntohs(hdr->message_length);
fdret = FLOW_DISSECT_RET_OUT_GOOD;
break;
}
default:
fdret = FLOW_DISSECT_RET_OUT_BAD;
break;