]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/network/netdev/l2tp-tunnel.h
Merge pull request #17549 from yuwata/tiny-fixes
[thirdparty/systemd.git] / src / network / netdev / l2tp-tunnel.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
3a56e697
SS
2#pragma once
3
9aa5d8ba 4#include <netinet/in.h>
3a56e697
SS
5#include <linux/l2tp.h>
6
7#include "in-addr-util.h"
8#include "netdev.h"
9#include "networkd-util.h"
10
11typedef enum L2tpL2specType {
12 NETDEV_L2TP_L2SPECTYPE_NONE = L2TP_L2SPECTYPE_NONE,
13 NETDEV_L2TP_L2SPECTYPE_DEFAULT = L2TP_L2SPECTYPE_DEFAULT,
14 _NETDEV_L2TP_L2SPECTYPE_MAX,
15 _NETDEV_L2TP_L2SPECTYPE_INVALID = -1,
16} L2tpL2specType;
17
18typedef enum L2tpEncapType {
19 NETDEV_L2TP_ENCAPTYPE_UDP = L2TP_ENCAPTYPE_UDP,
20 NETDEV_L2TP_ENCAPTYPE_IP = L2TP_ENCAPTYPE_IP,
21 _NETDEV_L2TP_ENCAPTYPE_MAX,
22 _NETDEV_L2TP_ENCAPTYPE_INVALID = -1,
23} L2tpEncapType;
24
d053d08a
YW
25typedef enum L2tpLocalAddressType {
26 NETDEV_L2TP_LOCAL_ADDRESS_AUTO,
27 NETDEV_L2TP_LOCAL_ADDRESS_STATIC,
28 NETDEV_L2TP_LOCAL_ADDRESS_DYNAMIC,
29 _NETDEV_L2TP_LOCAL_ADDRESS_MAX,
30 _NETDEV_L2TP_LOCAL_ADDRESS_INVALID = -1,
31} L2tpLocalAddressType;
32
3a56e697
SS
33typedef struct L2tpTunnel L2tpTunnel;
34
35typedef struct L2tpSession {
36 L2tpTunnel *tunnel;
37 NetworkConfigSection *section;
38
39 char *name;
40
41 uint32_t session_id;
42 uint32_t peer_session_id;
43 L2tpL2specType l2tp_l2spec_type;
44} L2tpSession;
45
46struct L2tpTunnel {
47 NetDev meta;
48
49 uint16_t l2tp_udp_sport;
50 uint16_t l2tp_udp_dport;
51
52 uint32_t tunnel_id;
53 uint32_t peer_tunnel_id;
54
55 int family;
56
57 bool udp_csum;
58 bool udp6_csum_rx;
59 bool udp6_csum_tx;
60
d053d08a 61 L2tpLocalAddressType local_address_type;
3a56e697
SS
62 union in_addr_union local;
63 union in_addr_union remote;
64
65 L2tpEncapType l2tp_encap_type;
66
67 OrderedHashmap *sessions_by_section;
68};
69
70DEFINE_NETDEV_CAST(L2TP, L2tpTunnel);
71extern const NetDevVTable l2tptnl_vtable;
72
73CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_tunnel_address);
74CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_tunnel_id);
75CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_encap_type);
76CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_session_l2spec);
77CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_session_id);
78CONFIG_PARSER_PROTOTYPE(config_parse_l2tp_session_name);