xref: /aosp_15_r20/external/libnl/include/netlink/route/nh.h (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
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