Line data Source code
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 0 : 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);