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.
l2tp: Add L2TPv3 IP encapsulation (no UDP) support
This patch adds a new L2TPIP socket family and modifies the core to handle the case where there is no UDP header in the L2TP packet. L2TP/IP uses IP protocol 115. Since L2TP/UDP and L2TP/IP packets differ in layout, the datapath packet handling code needs changes too. Userspace uses an L2TPIP socket instead of a UDP socket when IP encapsulation is required. We can't use raw sockets for this because the semantics of raw sockets don't lend themselves to the socket-per-tunnel model - we need to Signed-off-by: David S. Miller <[email protected]>
- Loading branch information
Showing
7 changed files
with
850 additions
and
62 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* L2TP-over-IP socket for L2TPv3. | ||
* | ||
* Author: James Chapman <[email protected]> | ||
*/ | ||
|
||
#ifndef _LINUX_L2TP_H_ | ||
#define _LINUX_L2TP_H_ | ||
|
||
#include <linux/types.h> | ||
#ifdef __KERNEL__ | ||
#include <linux/socket.h> | ||
#include <linux/in.h> | ||
#endif | ||
|
||
#define IPPROTO_L2TP 115 | ||
|
||
/** | ||
* struct sockaddr_l2tpip - the sockaddr structure for L2TP-over-IP sockets | ||
* @l2tp_family: address family number AF_L2TPIP. | ||
* @l2tp_addr: protocol specific address information | ||
* @l2tp_conn_id: connection id of tunnel | ||
*/ | ||
struct sockaddr_l2tpip { | ||
/* The first fields must match struct sockaddr_in */ | ||
sa_family_t l2tp_family; /* AF_INET */ | ||
__be16 l2tp_unused; /* INET port number (unused) */ | ||
struct in_addr l2tp_addr; /* Internet address */ | ||
|
||
__u32 l2tp_conn_id; /* Connection ID of tunnel */ | ||
|
||
/* Pad to size of `struct sockaddr'. */ | ||
unsigned char __pad[sizeof(struct sockaddr) - sizeof(sa_family_t) - | ||
sizeof(__be16) - sizeof(struct in_addr) - | ||
sizeof(__u32)]; | ||
}; | ||
|
||
#endif |
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
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.