forked from mirrors/linux
		
	 46126db9c8
			
		
	
	
		46126db9c8
		
	
	
	
	
		
			
			Allow to dissect PPPoE specific fields which are:
- session ID (16 bits)
- ppp protocol (16 bits)
- type (16 bits) - this is PPPoE ethertype, for now only
  ETH_P_PPP_SES is supported, possible ETH_P_PPP_DISC
  in the future
The goal is to make the following TC command possible:
  # tc filter add dev ens6f0 ingress prio 1 protocol ppp_ses \
      flower \
        pppoe_sid 12 \
        ppp_proto ip \
      action drop
Note that only PPPoE Session is supported.
Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>
Acked-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
		
	
			
		
			
				
	
	
		
			28 lines
		
	
	
	
		
			663 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			663 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0-only */
 | |
| /*
 | |
|  * ppp_defs.h - PPP definitions.
 | |
|  *
 | |
|  * Copyright 1994-2000 Paul Mackerras.
 | |
|  */
 | |
| #ifndef _PPP_DEFS_H_
 | |
| #define _PPP_DEFS_H_
 | |
| 
 | |
| #include <linux/crc-ccitt.h>
 | |
| #include <uapi/linux/ppp_defs.h>
 | |
| 
 | |
| #define PPP_FCS(fcs, c) crc_ccitt_byte(fcs, c)
 | |
| 
 | |
| /**
 | |
|  * ppp_proto_is_valid - checks if PPP protocol is valid
 | |
|  * @proto: PPP protocol
 | |
|  *
 | |
|  * Assumes proto is not compressed.
 | |
|  * Protocol is valid if the value is odd and the least significant bit of the
 | |
|  * most significant octet is 0 (see RFC 1661, section 2).
 | |
|  */
 | |
| static inline bool ppp_proto_is_valid(u16 proto)
 | |
| {
 | |
| 	return !!((proto & 0x0101) == 0x0001);
 | |
| }
 | |
| 
 | |
| #endif /* _PPP_DEFS_H_ */
 |