mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
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_ */
|