forked from mirrors/linux
		
	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:
		
							parent
							
								
									7185425582
								
							
						
					
					
						commit
						4f1cc51f34
					
				
					 1 changed files with 16 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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 @@ bool __skb_flow_dissect(const struct net *net,
 | 
			
		|||
						  &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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue