1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */ 2*4dc78e53SAndroid Build Coastguard Worker /* 3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2013 Yasunobu Chiba <[email protected]> 4*4dc78e53SAndroid Build Coastguard Worker */ 5*4dc78e53SAndroid Build Coastguard Worker 6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_LINK_VXLAN_H_ 7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_LINK_VXLAN_H_ 8*4dc78e53SAndroid Build Coastguard Worker 9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h> 10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/link.h> 11*4dc78e53SAndroid Build Coastguard Worker 12*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus 13*4dc78e53SAndroid Build Coastguard Worker extern "C" { 14*4dc78e53SAndroid Build Coastguard Worker #endif 15*4dc78e53SAndroid Build Coastguard Worker 16*4dc78e53SAndroid Build Coastguard Worker struct ifla_vxlan_port_range; 17*4dc78e53SAndroid Build Coastguard Worker 18*4dc78e53SAndroid Build Coastguard Worker #define VXLAN_ID_MAX 16777215 19*4dc78e53SAndroid Build Coastguard Worker 20*4dc78e53SAndroid Build Coastguard Worker enum { 21*4dc78e53SAndroid Build Coastguard Worker RTNL_LINK_VXLAN_F_GBP = 1 << 0, 22*4dc78e53SAndroid Build Coastguard Worker #define RTNL_LINK_VXLAN_F_GBP RTNL_LINK_VXLAN_F_GBP 23*4dc78e53SAndroid Build Coastguard Worker RTNL_LINK_VXLAN_F_GPE = 1 << 1, 24*4dc78e53SAndroid Build Coastguard Worker #define RTNL_LINK_VXLAN_F_GPE RTNL_LINK_VXLAN_F_GPE 25*4dc78e53SAndroid Build Coastguard Worker RTNL_LINK_VXLAN_F_REMCSUM_NOPARTIAL = 1 << 2, 26*4dc78e53SAndroid Build Coastguard Worker #define RTNL_LINK_VXLAN_F_REMCSUM_NOPARTIAL RTNL_LINK_VXLAN_F_REMCSUM_NOPARTIAL 27*4dc78e53SAndroid Build Coastguard Worker }; 28*4dc78e53SAndroid Build Coastguard Worker 29*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_link *rtnl_link_vxlan_alloc(void); 30*4dc78e53SAndroid Build Coastguard Worker 31*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_is_vxlan(struct rtnl_link *); 32*4dc78e53SAndroid Build Coastguard Worker 33*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_id(struct rtnl_link *, uint32_t); 34*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_id(struct rtnl_link *, uint32_t *); 35*4dc78e53SAndroid Build Coastguard Worker 36*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_group(struct rtnl_link *, struct nl_addr *); 37*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_group(struct rtnl_link *, struct nl_addr **); 38*4dc78e53SAndroid Build Coastguard Worker 39*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_link(struct rtnl_link *, uint32_t); 40*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_link(struct rtnl_link *, uint32_t *); 41*4dc78e53SAndroid Build Coastguard Worker 42*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_local(struct rtnl_link *, struct nl_addr *); 43*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_local(struct rtnl_link *, struct nl_addr **); 44*4dc78e53SAndroid Build Coastguard Worker 45*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_ttl(struct rtnl_link *, uint8_t); 46*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_ttl(struct rtnl_link *); 47*4dc78e53SAndroid Build Coastguard Worker 48*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_tos(struct rtnl_link *, uint8_t); 49*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_tos(struct rtnl_link *); 50*4dc78e53SAndroid Build Coastguard Worker 51*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_learning(struct rtnl_link *, uint8_t); 52*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_learning(struct rtnl_link *); 53*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_enable_learning(struct rtnl_link *); 54*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_disable_learning(struct rtnl_link *); 55*4dc78e53SAndroid Build Coastguard Worker 56*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_ageing(struct rtnl_link *, uint32_t); 57*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_ageing(struct rtnl_link *, uint32_t *); 58*4dc78e53SAndroid Build Coastguard Worker 59*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_limit(struct rtnl_link *, uint32_t); 60*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_limit(struct rtnl_link *, uint32_t *); 61*4dc78e53SAndroid Build Coastguard Worker 62*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_port_range(struct rtnl_link *, 63*4dc78e53SAndroid Build Coastguard Worker struct ifla_vxlan_port_range *); 64*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_port_range(struct rtnl_link *, 65*4dc78e53SAndroid Build Coastguard Worker struct ifla_vxlan_port_range *); 66*4dc78e53SAndroid Build Coastguard Worker 67*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_proxy(struct rtnl_link *, uint8_t); 68*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_proxy(struct rtnl_link *); 69*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_enable_proxy(struct rtnl_link *); 70*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_disable_proxy(struct rtnl_link *); 71*4dc78e53SAndroid Build Coastguard Worker 72*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_rsc(struct rtnl_link *, uint8_t); 73*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_rsc(struct rtnl_link *); 74*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_enable_rsc(struct rtnl_link *); 75*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_disable_rsc(struct rtnl_link *); 76*4dc78e53SAndroid Build Coastguard Worker 77*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_l2miss(struct rtnl_link *, uint8_t); 78*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_l2miss(struct rtnl_link *); 79*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_enable_l2miss(struct rtnl_link *); 80*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_disable_l2miss(struct rtnl_link *); 81*4dc78e53SAndroid Build Coastguard Worker 82*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_l3miss(struct rtnl_link *, uint8_t); 83*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_l3miss(struct rtnl_link *); 84*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_enable_l3miss(struct rtnl_link *); 85*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_disable_l3miss(struct rtnl_link *); 86*4dc78e53SAndroid Build Coastguard Worker 87*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_port(struct rtnl_link *, uint32_t); 88*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_port(struct rtnl_link *, uint32_t *); 89*4dc78e53SAndroid Build Coastguard Worker 90*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_udp_csum(struct rtnl_link *, uint8_t); 91*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_udp_csum(struct rtnl_link *); 92*4dc78e53SAndroid Build Coastguard Worker 93*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_udp_zero_csum6_tx(struct rtnl_link *, uint8_t); 94*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_udp_zero_csum6_tx(struct rtnl_link *); 95*4dc78e53SAndroid Build Coastguard Worker 96*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_udp_zero_csum6_rx(struct rtnl_link *, uint8_t); 97*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_udp_zero_csum6_rx(struct rtnl_link *); 98*4dc78e53SAndroid Build Coastguard Worker 99*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_remcsum_tx(struct rtnl_link *, uint8_t); 100*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_remcsum_tx(struct rtnl_link *); 101*4dc78e53SAndroid Build Coastguard Worker 102*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_remcsum_rx(struct rtnl_link *, uint8_t); 103*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_remcsum_rx(struct rtnl_link *); 104*4dc78e53SAndroid Build Coastguard Worker 105*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_flags(struct rtnl_link *, uint32_t flags, int enable); 106*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_flags(struct rtnl_link *, uint32_t *out_flags); 107*4dc78e53SAndroid Build Coastguard Worker 108*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_collect_metadata(struct rtnl_link *, uint8_t); 109*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_collect_metadata(struct rtnl_link *); 110*4dc78e53SAndroid Build Coastguard Worker 111*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_set_label(struct rtnl_link *, uint32_t); 112*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_link_vxlan_get_label(struct rtnl_link *, uint32_t *); 113*4dc78e53SAndroid Build Coastguard Worker 114*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus 115*4dc78e53SAndroid Build Coastguard Worker } 116*4dc78e53SAndroid Build Coastguard Worker #endif 117*4dc78e53SAndroid Build Coastguard Worker 118*4dc78e53SAndroid Build Coastguard Worker #endif 119