1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 This file is part of systemd.
7 Copyright 2014 Tom Gundersen <teg@jklm.no>
10 #include "in-addr-util.h"
12 #include "netdev/netdev.h"
14 typedef enum Ip6TnlMode
{
15 NETDEV_IP6_TNL_MODE_IP6IP6
,
16 NETDEV_IP6_TNL_MODE_IPIP6
,
17 NETDEV_IP6_TNL_MODE_ANYIP6
,
18 _NETDEV_IP6_TNL_MODE_MAX
,
19 _NETDEV_IP6_TNL_MODE_INVALID
= -1,
22 typedef enum IPv6FlowLabel
{
23 NETDEV_IPV6_FLOWLABEL_INHERIT
= 0xFFFFF + 1,
24 _NETDEV_IPV6_FLOWLABEL_MAX
,
25 _NETDEV_IPV6_FLOWLABEL_INVALID
= -1,
28 typedef struct Tunnel
{
35 int allow_localremote
;
45 union in_addr_union local
;
46 union in_addr_union remote
;
48 Ip6TnlMode ip6tnl_mode
;
55 DEFINE_NETDEV_CAST(IPIP
, Tunnel
);
56 DEFINE_NETDEV_CAST(GRE
, Tunnel
);
57 DEFINE_NETDEV_CAST(GRETAP
, Tunnel
);
58 DEFINE_NETDEV_CAST(IP6GRE
, Tunnel
);
59 DEFINE_NETDEV_CAST(IP6GRETAP
, Tunnel
);
60 DEFINE_NETDEV_CAST(SIT
, Tunnel
);
61 DEFINE_NETDEV_CAST(VTI
, Tunnel
);
62 DEFINE_NETDEV_CAST(VTI6
, Tunnel
);
63 DEFINE_NETDEV_CAST(IP6TNL
, Tunnel
);
64 extern const NetDevVTable ipip_vtable
;
65 extern const NetDevVTable sit_vtable
;
66 extern const NetDevVTable vti_vtable
;
67 extern const NetDevVTable vti6_vtable
;
68 extern const NetDevVTable gre_vtable
;
69 extern const NetDevVTable gretap_vtable
;
70 extern const NetDevVTable ip6gre_vtable
;
71 extern const NetDevVTable ip6gretap_vtable
;
72 extern const NetDevVTable ip6tnl_vtable
;
74 const char *ip6tnl_mode_to_string(Ip6TnlMode d
) _const_
;
75 Ip6TnlMode
ip6tnl_mode_from_string(const char *d
) _pure_
;
77 int config_parse_ip6tnl_mode(const char *unit
, const char *filename
,
78 unsigned line
, const char *section
,
79 unsigned section_line
, const char *lvalue
,
80 int ltype
, const char *rvalue
, void *data
,
83 int config_parse_tunnel_address(const char *unit
,
87 unsigned section_line
,
94 int config_parse_ipv6_flowlabel(const char *unit
, const char *filename
,
95 unsigned line
, const char *section
,
96 unsigned section_line
, const char *lvalue
,
97 int ltype
, const char *rvalue
, void *data
,
100 int config_parse_encap_limit(const char *unit
, const char *filename
,
101 unsigned line
, const char *section
,
102 unsigned section_line
, const char *lvalue
,
103 int ltype
, const char *rvalue
, void *data
,
105 int config_parse_tunnel_key(const char *unit
, const char *filename
,
106 unsigned line
, const char *section
,
107 unsigned section_line
, const char *lvalue
,
108 int ltype
, const char *rvalue
, void *data
,