forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
netfilter: introduce l2tp match extension
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 <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
- Loading branch information
Showing
5 changed files
with
393 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#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 */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.