Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : #pragma once 3 : 4 : typedef struct VxLan VxLan; 5 : 6 : #include <linux/if_link.h> 7 : 8 : #include "in-addr-util.h" 9 : #include "netdev/netdev.h" 10 : 11 : #define VXLAN_VID_MAX (1u << 24) - 1 12 : #define VXLAN_FLOW_LABEL_MAX_MASK 0xFFFFFU 13 : 14 : typedef enum VxLanDF { 15 : NETDEV_VXLAN_DF_NO = VXLAN_DF_UNSET, 16 : NETDEV_VXLAN_DF_YES = VXLAN_DF_SET, 17 : NETDEV_VXLAN_DF_INHERIT = VXLAN_DF_INHERIT, 18 : _NETDEV_VXLAN_DF_MAX, 19 : _NETDEV_VXLAN_DF_INVALID = -1 20 : } VxLanDF; 21 : 22 : struct VxLan { 23 : NetDev meta; 24 : 25 : uint32_t vni; 26 : 27 : int remote_family; 28 : int local_family; 29 : int group_family; 30 : 31 : VxLanDF df; 32 : 33 : union in_addr_union remote; 34 : union in_addr_union local; 35 : union in_addr_union group; 36 : 37 : unsigned tos; 38 : unsigned ttl; 39 : unsigned max_fdb; 40 : unsigned flow_label; 41 : 42 : uint16_t dest_port; 43 : 44 : usec_t fdb_ageing; 45 : 46 : bool learning; 47 : bool arp_proxy; 48 : bool route_short_circuit; 49 : bool l2miss; 50 : bool l3miss; 51 : bool udpcsum; 52 : bool udp6zerocsumtx; 53 : bool udp6zerocsumrx; 54 : bool remote_csum_tx; 55 : bool remote_csum_rx; 56 : bool group_policy; 57 : bool generic_protocol_extension; 58 : bool inherit; 59 : 60 : struct ifla_vxlan_port_range port_range; 61 : }; 62 : 63 0 : DEFINE_NETDEV_CAST(VXLAN, VxLan); 64 : extern const NetDevVTable vxlan_vtable; 65 : 66 : const char *df_to_string(VxLanDF d) _const_; 67 : VxLanDF df_from_string(const char *d) _pure_; 68 : 69 : CONFIG_PARSER_PROTOTYPE(config_parse_vxlan_address); 70 : CONFIG_PARSER_PROTOTYPE(config_parse_port_range); 71 : CONFIG_PARSER_PROTOTYPE(config_parse_flow_label); 72 : CONFIG_PARSER_PROTOTYPE(config_parse_df); 73 : CONFIG_PARSER_PROTOTYPE(config_parse_vxlan_ttl);