1 /* SPDX-License-Identifier: LGPL-2.1-only */ 2 /* 3 * Copyright (c) 2013 Michael Braun <[email protected]> 4 */ 5 6 #ifndef NETLINK_LINK_MACVLAN_H_ 7 #define NETLINK_LINK_MACVLAN_H_ 8 9 #include <netlink/netlink.h> 10 #include <netlink/route/link.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 extern struct rtnl_link *rtnl_link_macvlan_alloc(void); 17 18 extern int rtnl_link_is_macvlan(struct rtnl_link *); 19 20 extern char * rtnl_link_macvlan_mode2str(int, char *, size_t); 21 extern int rtnl_link_macvlan_str2mode(const char *); 22 23 extern char * rtnl_link_macvlan_flags2str(int, char *, size_t); 24 extern int rtnl_link_macvlan_str2flags(const char *); 25 26 extern char * rtnl_link_macvlan_macmode2str(int, char *, size_t); 27 extern int rtnl_link_macvlan_str2macmode(const char *); 28 29 extern int rtnl_link_macvlan_set_mode(struct rtnl_link *, 30 uint32_t); 31 extern uint32_t rtnl_link_macvlan_get_mode(struct rtnl_link *); 32 33 extern int rtnl_link_macvlan_set_flags(struct rtnl_link *, 34 uint16_t); 35 extern int rtnl_link_macvlan_unset_flags(struct rtnl_link *, 36 uint16_t); 37 extern uint16_t rtnl_link_macvlan_get_flags(struct rtnl_link *); 38 39 extern int rtnl_link_macvlan_set_macmode(struct rtnl_link *, 40 uint32_t); 41 extern int rtnl_link_macvlan_get_macmode(struct rtnl_link *link, 42 uint32_t *out_macmode); 43 44 extern int rtnl_link_macvlan_count_macaddr(struct rtnl_link *link, 45 uint32_t *out_count); 46 extern int rtnl_link_macvlan_get_macaddr(struct rtnl_link *link, 47 uint32_t idx, 48 const struct nl_addr **addr); 49 extern int rtnl_link_macvlan_add_macaddr(struct rtnl_link *link, 50 struct nl_addr *addr); 51 extern int rtnl_link_macvlan_del_macaddr(struct rtnl_link *link, 52 struct nl_addr *addr); 53 54 #ifdef __cplusplus 55 } 56 #endif 57 58 #endif 59