xref: /aosp_15_r20/external/libnl/include/netlink/route/nexthop.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) 2003-2008 Thomas Graf <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker  */
5*4dc78e53SAndroid Build Coastguard Worker 
6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_ROUTE_NEXTHOP_H_
7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_ROUTE_NEXTHOP_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_nexthop;
17*4dc78e53SAndroid Build Coastguard Worker 
18*4dc78e53SAndroid Build Coastguard Worker enum {
19*4dc78e53SAndroid Build Coastguard Worker 	NH_DUMP_FROM_ONELINE = -2,
20*4dc78e53SAndroid Build Coastguard Worker 	NH_DUMP_FROM_DETAILS = -1,
21*4dc78e53SAndroid Build Coastguard Worker 	NH_DUMP_FROM_ENV = 0,
22*4dc78e53SAndroid Build Coastguard Worker 	/* > 0 reserved for nexthop index */
23*4dc78e53SAndroid Build Coastguard Worker };
24*4dc78e53SAndroid Build Coastguard Worker 
25*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_nexthop * rtnl_route_nh_alloc(void);
26*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_nexthop * rtnl_route_nh_clone(struct rtnl_nexthop *);
27*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_free(struct rtnl_nexthop *);
28*4dc78e53SAndroid Build Coastguard Worker 
29*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_compare(struct rtnl_nexthop *,
30*4dc78e53SAndroid Build Coastguard Worker 					      struct rtnl_nexthop *,
31*4dc78e53SAndroid Build Coastguard Worker 					      uint32_t, int);
32*4dc78e53SAndroid Build Coastguard Worker 
33*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_identical(struct rtnl_nexthop *,
34*4dc78e53SAndroid Build Coastguard Worker 						struct rtnl_nexthop *);
35*4dc78e53SAndroid Build Coastguard Worker 
36*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_dump(struct rtnl_nexthop *,
37*4dc78e53SAndroid Build Coastguard Worker 					   struct nl_dump_params *);
38*4dc78e53SAndroid Build Coastguard Worker 
39*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_set_weight(struct rtnl_nexthop *, uint8_t);
40*4dc78e53SAndroid Build Coastguard Worker extern uint8_t		rtnl_route_nh_get_weight(struct rtnl_nexthop *);
41*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_set_ifindex(struct rtnl_nexthop *, int);
42*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_get_ifindex(struct rtnl_nexthop *);
43*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_set_gateway(struct rtnl_nexthop *,
44*4dc78e53SAndroid Build Coastguard Worker 						  struct nl_addr *);
45*4dc78e53SAndroid Build Coastguard Worker extern struct nl_addr *	rtnl_route_nh_get_gateway(struct rtnl_nexthop *);
46*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_set_flags(struct rtnl_nexthop *,
47*4dc78e53SAndroid Build Coastguard Worker 						unsigned int);
48*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_unset_flags(struct rtnl_nexthop *,
49*4dc78e53SAndroid Build Coastguard Worker 						  unsigned int);
50*4dc78e53SAndroid Build Coastguard Worker extern unsigned int	rtnl_route_nh_get_flags(struct rtnl_nexthop *);
51*4dc78e53SAndroid Build Coastguard Worker extern void		rtnl_route_nh_set_realms(struct rtnl_nexthop *,
52*4dc78e53SAndroid Build Coastguard Worker 						 uint32_t);
53*4dc78e53SAndroid Build Coastguard Worker extern uint32_t		rtnl_route_nh_get_realms(struct rtnl_nexthop *);
54*4dc78e53SAndroid Build Coastguard Worker 
55*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_set_newdst(struct rtnl_nexthop *,
56*4dc78e53SAndroid Build Coastguard Worker 						 struct nl_addr *);
57*4dc78e53SAndroid Build Coastguard Worker extern struct nl_addr *	rtnl_route_nh_get_newdst(struct rtnl_nexthop *);
58*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_set_via(struct rtnl_nexthop *,
59*4dc78e53SAndroid Build Coastguard Worker 						 struct nl_addr *);
60*4dc78e53SAndroid Build Coastguard Worker extern struct nl_addr *	rtnl_route_nh_get_via(struct rtnl_nexthop *);
61*4dc78e53SAndroid Build Coastguard Worker extern char *		rtnl_route_nh_flags2str(int, char *, size_t);
62*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_str2flags(const char *);
63*4dc78e53SAndroid Build Coastguard Worker 
64*4dc78e53SAndroid Build Coastguard Worker /*
65*4dc78e53SAndroid Build Coastguard Worker  * nexthop encapsulations
66*4dc78e53SAndroid Build Coastguard Worker  */
67*4dc78e53SAndroid Build Coastguard Worker extern int		rtnl_route_nh_encap_mpls(struct rtnl_nexthop *nh,
68*4dc78e53SAndroid Build Coastguard Worker 						 struct nl_addr *addr,
69*4dc78e53SAndroid Build Coastguard Worker 						 uint8_t ttl);
70*4dc78e53SAndroid Build Coastguard Worker extern struct nl_addr *	rtnl_route_nh_get_encap_mpls_dst(struct rtnl_nexthop *);
71*4dc78e53SAndroid Build Coastguard Worker extern uint8_t		rtnl_route_nh_get_encap_mpls_ttl(struct rtnl_nexthop *);
72*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus
73*4dc78e53SAndroid Build Coastguard Worker }
74*4dc78e53SAndroid Build Coastguard Worker #endif
75*4dc78e53SAndroid Build Coastguard Worker 
76*4dc78e53SAndroid Build Coastguard Worker #endif
77