]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/netdev/geneve.h
Merge pull request #12390 from poettering/string-file-mkdir
[thirdparty/systemd.git] / src / network / netdev / geneve.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 typedef struct Geneve Geneve;
5
6 #include "in-addr-util.h"
7 #include "netdev.h"
8 #include "networkd-link.h"
9 #include "networkd-network.h"
10
11 #define GENEVE_VID_MAX (1u << 24) - 1
12
13 typedef enum GeneveDF {
14 NETDEV_GENEVE_DF_NO = GENEVE_DF_UNSET,
15 NETDEV_GENEVE_DF_YES = GENEVE_DF_SET,
16 NETDEV_GENEVE_DF_INHERIT = GENEVE_DF_INHERIT,
17 _NETDEV_GENEVE_DF_MAX,
18 _NETDEV_GENEVE_DF_INVALID = -1
19 } GeneveDF;
20
21 struct Geneve {
22 NetDev meta;
23
24 uint32_t id;
25 uint32_t flow_label;
26
27 int remote_family;
28
29 uint8_t tos;
30 uint8_t ttl;
31
32 uint16_t dest_port;
33
34 bool udpcsum;
35 bool udp6zerocsumtx;
36 bool udp6zerocsumrx;
37 bool inherit;
38
39 GeneveDF geneve_df;
40 union in_addr_union remote;
41 };
42
43 DEFINE_NETDEV_CAST(GENEVE, Geneve);
44 extern const NetDevVTable geneve_vtable;
45
46 const char *geneve_df_to_string(GeneveDF d) _const_;
47 GeneveDF geneve_df_from_string(const char *d) _pure_;
48
49 CONFIG_PARSER_PROTOTYPE(config_parse_geneve_vni);
50 CONFIG_PARSER_PROTOTYPE(config_parse_geneve_address);
51 CONFIG_PARSER_PROTOTYPE(config_parse_geneve_flow_label);
52 CONFIG_PARSER_PROTOTYPE(config_parse_geneve_df);
53 CONFIG_PARSER_PROTOTYPE(config_parse_geneve_ttl);