1 /* 2 * netlink/route/link/geneve.h GENEVE interface 3 * This library is free software; you can redistribute it and/or 4 * modify it under the terms of the GNU Lesser General Public 5 * License as published by the Free Software Foundation version 2.1 6 * of the License. 7 */ 8 9 #ifndef NETLINK_LINK_GENEVE_H_ 10 #define NETLINK_LINK_GENEVE_H_ 11 12 #include <netlink/netlink.h> 13 #include <netlink/route/link.h> 14 15 #ifdef __cplusplus 16 extern "C" { 17 #endif 18 19 #define RTNL_GENEVE_ID_MAX 16777215 20 21 #define RTNL_LINK_GENEVE_F_COLLECT_METADATA (1<<0) 22 23 extern struct rtnl_link *rtnl_link_geneve_alloc(void); 24 extern int rtnl_link_is_geneve(struct rtnl_link *); 25 26 extern int rtnl_link_geneve_set_id(struct rtnl_link *, uint32_t); 27 extern int rtnl_link_geneve_get_id(struct rtnl_link *, uint32_t *); 28 29 extern int rtnl_link_geneve_set_remote(struct rtnl_link *, struct nl_addr *); 30 extern int rtnl_link_geneve_get_remote(struct rtnl_link *, struct nl_addr **); 31 32 extern int rtnl_link_geneve_set_ttl(struct rtnl_link *, uint8_t); 33 extern int rtnl_link_geneve_get_ttl(struct rtnl_link *); 34 35 extern int rtnl_link_geneve_set_tos(struct rtnl_link *, uint8_t); 36 extern int rtnl_link_geneve_get_tos(struct rtnl_link *); 37 38 extern int rtnl_link_geneve_set_port(struct rtnl_link *, uint32_t); 39 extern int rtnl_link_geneve_get_port(struct rtnl_link *, uint32_t *); 40 41 extern int rtnl_link_geneve_set_label(struct rtnl_link *, uint32_t); 42 extern int rtnl_link_geneve_get_label(struct rtnl_link *, uint32_t *); 43 44 extern int rtnl_link_geneve_set_udp_csum(struct rtnl_link *, uint8_t); 45 extern int rtnl_link_geneve_get_udp_csum(struct rtnl_link *); 46 47 extern int rtnl_link_geneve_set_udp_zero_csum6_tx(struct rtnl_link *, uint8_t); 48 extern int rtnl_link_geneve_get_udp_zero_csum6_tx(struct rtnl_link *); 49 50 extern int rtnl_link_geneve_set_udp_zero_csum6_rx(struct rtnl_link *, uint8_t); 51 extern int rtnl_link_geneve_get_udp_zero_csum6_rx(struct rtnl_link *); 52 53 extern int rtnl_link_geneve_set_flags(struct rtnl_link *, uint8_t flags, int enable); 54 extern int rtnl_link_geneve_get_flags(struct rtnl_link *, uint8_t *flags); 55 56 #ifdef __cplusplus 57 } 58 #endif 59 60 #endif 61