Branch data 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);