1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */ 2*4dc78e53SAndroid Build Coastguard Worker /* 3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2022 Stanislav Zaikin <[email protected]> 4*4dc78e53SAndroid Build Coastguard Worker */ 5*4dc78e53SAndroid Build Coastguard Worker 6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_ROUTE_NEXTHOP2_H_ 7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_ROUTE_NEXTHOP2_H_ 8*4dc78e53SAndroid Build Coastguard Worker 9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h> 10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/addr.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 rtnl_nh; 17*4dc78e53SAndroid Build Coastguard Worker 18*4dc78e53SAndroid Build Coastguard Worker typedef struct nl_nh_group_info { 19*4dc78e53SAndroid Build Coastguard Worker uint32_t nh_id; /*!< nexthop id */ 20*4dc78e53SAndroid Build Coastguard Worker uint8_t weight; /*!< weight in nexthop group */ 21*4dc78e53SAndroid Build Coastguard Worker } nl_nh_group_info_t; 22*4dc78e53SAndroid Build Coastguard Worker 23*4dc78e53SAndroid Build Coastguard Worker typedef struct nl_nh_group { 24*4dc78e53SAndroid Build Coastguard Worker int ce_refcnt; 25*4dc78e53SAndroid Build Coastguard Worker unsigned size; 26*4dc78e53SAndroid Build Coastguard Worker nl_nh_group_info_t *entries; 27*4dc78e53SAndroid Build Coastguard Worker } nl_nh_group_t; 28*4dc78e53SAndroid Build Coastguard Worker 29*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_alloc_cache(struct nl_sock *sk, int family, 30*4dc78e53SAndroid Build Coastguard Worker struct nl_cache **result); 31*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_nh *rtnl_nh_alloc(void); 32*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_nh_put(struct rtnl_nh *); 33*4dc78e53SAndroid Build Coastguard Worker 34*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_nh *rtnl_nh_get(struct nl_cache *cache, int nhid); 35*4dc78e53SAndroid Build Coastguard Worker 36*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_set_gateway(struct rtnl_nh *, struct nl_addr *); 37*4dc78e53SAndroid Build Coastguard Worker extern struct nl_addr *rtnl_nh_get_gateway(struct rtnl_nh *); 38*4dc78e53SAndroid Build Coastguard Worker 39*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_set_fdb(struct rtnl_nh *, int value); 40*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_get_fdb(struct rtnl_nh *); 41*4dc78e53SAndroid Build Coastguard Worker 42*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_get_group_entry(struct rtnl_nh *, int n); 43*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_get_group_size(struct rtnl_nh *); 44*4dc78e53SAndroid Build Coastguard Worker 45*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_get_id(struct rtnl_nh *); 46*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_nh_get_oif(struct rtnl_nh *); 47*4dc78e53SAndroid Build Coastguard Worker 48*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus 49*4dc78e53SAndroid Build Coastguard Worker } 50*4dc78e53SAndroid Build Coastguard Worker #endif 51*4dc78e53SAndroid Build Coastguard Worker 52*4dc78e53SAndroid Build Coastguard Worker #endif 53