mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
![James Chapman](/assets/img/avatar_default.png)
Introduce an xtables add-on for matching L2TP packets. Supports L2TPv2 and L2TPv3 over IPv4 and IPv6. As well as filtering on L2TP tunnel-id and session-id, the filtering decision can also include the L2TP packet type (control or data), protocol version (2 or 3) and encapsulation type (UDP or IP). The most common use for this will likely be to filter L2TP data packets of individual L2TP tunnels or sessions. While a u32 match can be used, the L2TP protocol headers are such that field offsets differ depending on bits set in the header, making rules for matching generic L2TP connections cumbersome. This match extension takes care of all that. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
27 lines
676 B
C
27 lines
676 B
C
#ifndef _LINUX_NETFILTER_XT_L2TP_H
|
|
#define _LINUX_NETFILTER_XT_L2TP_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum xt_l2tp_type {
|
|
XT_L2TP_TYPE_CONTROL,
|
|
XT_L2TP_TYPE_DATA,
|
|
};
|
|
|
|
/* L2TP matching stuff */
|
|
struct xt_l2tp_info {
|
|
__u32 tid; /* tunnel id */
|
|
__u32 sid; /* session id */
|
|
__u8 version; /* L2TP protocol version */
|
|
__u8 type; /* L2TP packet type */
|
|
__u8 flags; /* which fields to match */
|
|
};
|
|
|
|
enum {
|
|
XT_L2TP_TID = (1 << 0), /* match L2TP tunnel id */
|
|
XT_L2TP_SID = (1 << 1), /* match L2TP session id */
|
|
XT_L2TP_VERSION = (1 << 2), /* match L2TP protocol version */
|
|
XT_L2TP_TYPE = (1 << 3), /* match L2TP packet type */
|
|
};
|
|
|
|
#endif /* _LINUX_NETFILTER_XT_L2TP_H */
|