1 /* SPDX-License-Identifier: LGPL-2.1-only */ 2 3 #ifndef NETLINK_MDB_H_ 4 #define NETLINK_MDB_H_ 5 6 #include <netlink/netlink.h> 7 #include <netlink/cache.h> 8 #include <netlink/route/link.h> 9 10 #ifdef __cplusplus 11 extern "C" { 12 #endif 13 14 struct rtnl_mdb; 15 struct rtnl_mdb_entry; 16 17 struct rtnl_mdb *rtnl_mdb_alloc(void); 18 void rtnl_mdb_put(struct rtnl_mdb *mdb); 19 20 int rtnl_mdb_alloc_cache(struct nl_sock *sk, struct nl_cache **result); 21 int rtnl_mdb_alloc_cache_flags(struct nl_sock *sock, 22 struct nl_cache **result, 23 unsigned int flags); 24 25 uint32_t rtnl_mdb_get_ifindex(struct rtnl_mdb *mdb); 26 void rtnl_mdb_add_entry(struct rtnl_mdb *mdb, 27 struct rtnl_mdb_entry *_entry); 28 29 void rtnl_mdb_foreach_entry(struct rtnl_mdb *mdb, 30 void (*cb)(struct rtnl_mdb_entry *, void *), 31 void *arg); 32 33 int rtnl_mdb_entry_get_ifindex(struct rtnl_mdb_entry *mdb_entry); 34 int rtnl_mdb_entry_get_vid(struct rtnl_mdb_entry *mdb_entry); 35 int rtnl_mdb_entry_get_state(struct rtnl_mdb_entry *mdb_entry); 36 struct nl_addr *rtnl_mdb_entry_get_addr(struct rtnl_mdb_entry 37 *mdb_entry); 38 uint16_t rtnl_mdb_entry_get_proto(struct rtnl_mdb_entry *mdb_entry); 39 #ifdef __cplusplus 40 } 41 #endif 42 #endif 43