forked from mirrors/linux
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_ */
|