xref: /aosp_15_r20/external/libnl/lib/route/tc-api.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) 2011-2013 Thomas Graf <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker  */
5*4dc78e53SAndroid Build Coastguard Worker 
6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_TC_API_H_
7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_TC_API_H_
8*4dc78e53SAndroid Build Coastguard Worker 
9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h>
10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/msg.h>
11*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/tc.h>
12*4dc78e53SAndroid Build Coastguard Worker 
13*4dc78e53SAndroid Build Coastguard Worker #include "nl-route.h"
14*4dc78e53SAndroid Build Coastguard Worker #include "nl-priv-dynamic-route/nl-priv-dynamic-route.h"
15*4dc78e53SAndroid Build Coastguard Worker #include "nl-priv-dynamic-core/nl-core.h"
16*4dc78e53SAndroid Build Coastguard Worker #include "nl-priv-dynamic-core/cache-api.h"
17*4dc78e53SAndroid Build Coastguard Worker 
18*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************************/
19*4dc78e53SAndroid Build Coastguard Worker 
20*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_HANDLE		0x0001
21*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_PARENT		0x0002
22*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_IFINDEX	0x0004
23*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_KIND		0x0008
24*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_FAMILY		0x0010
25*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_INFO		0x0020
26*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_OPTS		0x0040
27*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_STATS		0x0080
28*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_XSTATS		0x0100
29*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_LINK		0x0200
30*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_MTU		0x0400
31*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_MPU		0x0800
32*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_OVERHEAD	0x1000
33*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_LINKTYPE	0x2000
34*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_CHAIN          0x4000
35*4dc78e53SAndroid Build Coastguard Worker #define TCA_ATTR_MAX            TCA_ATTR_CHAIN
36*4dc78e53SAndroid Build Coastguard Worker 
37*4dc78e53SAndroid Build Coastguard Worker extern int tca_parse(struct nlattr **, int, struct rtnl_tc *,
38*4dc78e53SAndroid Build Coastguard Worker                      const struct nla_policy *);
39*4dc78e53SAndroid Build Coastguard Worker 
40*4dc78e53SAndroid Build Coastguard Worker #define RTNL_TC_RTABLE_SIZE	256
41*4dc78e53SAndroid Build Coastguard Worker 
tca_xstats(struct rtnl_tc * tca)42*4dc78e53SAndroid Build Coastguard Worker static inline void *tca_xstats(struct rtnl_tc *tca)
43*4dc78e53SAndroid Build Coastguard Worker {
44*4dc78e53SAndroid Build Coastguard Worker 	return tca->tc_xstats->d_data;
45*4dc78e53SAndroid Build Coastguard Worker }
46*4dc78e53SAndroid Build Coastguard Worker 
47*4dc78e53SAndroid Build Coastguard Worker extern struct nl_af_group tc_groups[];
48*4dc78e53SAndroid Build Coastguard Worker 
49*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************************/
50*4dc78e53SAndroid Build Coastguard Worker 
51*4dc78e53SAndroid Build Coastguard Worker struct rtnl_tc_type_ops
52*4dc78e53SAndroid Build Coastguard Worker {
53*4dc78e53SAndroid Build Coastguard Worker 	enum rtnl_tc_type tt_type;
54*4dc78e53SAndroid Build Coastguard Worker 
55*4dc78e53SAndroid Build Coastguard Worker 	char *tt_dump_prefix;
56*4dc78e53SAndroid Build Coastguard Worker 
57*4dc78e53SAndroid Build Coastguard Worker 	/**
58*4dc78e53SAndroid Build Coastguard Worker 	 * Dump callbacks
59*4dc78e53SAndroid Build Coastguard Worker 	 */
60*4dc78e53SAndroid Build Coastguard Worker 	void (*tt_dump[NL_DUMP_MAX+1])(struct rtnl_tc *,
61*4dc78e53SAndroid Build Coastguard Worker 				        struct nl_dump_params *);
62*4dc78e53SAndroid Build Coastguard Worker };
63*4dc78e53SAndroid Build Coastguard Worker 
64*4dc78e53SAndroid Build Coastguard Worker void *rtnl_tc_data_peek(struct rtnl_tc *tc);
65*4dc78e53SAndroid Build Coastguard Worker 
66*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************************/
67*4dc78e53SAndroid Build Coastguard Worker 
68*4dc78e53SAndroid Build Coastguard Worker /* WARNING: the following symbols are wrongly exported in libnl-route-3
69*4dc78e53SAndroid Build Coastguard Worker  * library. They are private API, but leaked. */
70*4dc78e53SAndroid Build Coastguard Worker extern int			rtnl_tc_msg_parse(struct nlmsghdr *,
71*4dc78e53SAndroid Build Coastguard Worker 						  struct rtnl_tc *);
72*4dc78e53SAndroid Build Coastguard Worker extern int			rtnl_tc_msg_build(struct rtnl_tc *, int,
73*4dc78e53SAndroid Build Coastguard Worker 						  int, struct nl_msg **);
74*4dc78e53SAndroid Build Coastguard Worker 
75*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_free_data(struct nl_object *);
76*4dc78e53SAndroid Build Coastguard Worker extern int			rtnl_tc_clone(struct nl_object *,
77*4dc78e53SAndroid Build Coastguard Worker 					      struct nl_object *);
78*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_dump_line(struct nl_object *,
79*4dc78e53SAndroid Build Coastguard Worker 						  struct nl_dump_params *);
80*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_dump_details(struct nl_object *,
81*4dc78e53SAndroid Build Coastguard Worker 						     struct nl_dump_params *);
82*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_dump_stats(struct nl_object *,
83*4dc78e53SAndroid Build Coastguard Worker 						   struct nl_dump_params *);
84*4dc78e53SAndroid Build Coastguard Worker extern uint64_t			rtnl_tc_compare(struct nl_object *,
85*4dc78e53SAndroid Build Coastguard Worker 						struct nl_object *,
86*4dc78e53SAndroid Build Coastguard Worker 						uint64_t, int);
87*4dc78e53SAndroid Build Coastguard Worker 
88*4dc78e53SAndroid Build Coastguard Worker extern void *			rtnl_tc_data(struct rtnl_tc *);
89*4dc78e53SAndroid Build Coastguard Worker extern void *			rtnl_tc_data_check(struct rtnl_tc *,
90*4dc78e53SAndroid Build Coastguard Worker 						   struct rtnl_tc_ops *, int *);
91*4dc78e53SAndroid Build Coastguard Worker 
92*4dc78e53SAndroid Build Coastguard Worker extern int 			rtnl_tc_register(struct rtnl_tc_ops *);
93*4dc78e53SAndroid Build Coastguard Worker extern void 			rtnl_tc_unregister(struct rtnl_tc_ops *);
94*4dc78e53SAndroid Build Coastguard Worker 
95*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_type_register(struct rtnl_tc_type_ops *);
96*4dc78e53SAndroid Build Coastguard Worker extern void			rtnl_tc_type_unregister(struct rtnl_tc_type_ops *);
97*4dc78e53SAndroid Build Coastguard Worker 
98*4dc78e53SAndroid Build Coastguard Worker 
99*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_tc_build_rate_table(struct rtnl_tc *tc, struct rtnl_ratespec *,
100*4dc78e53SAndroid Build Coastguard Worker 				    uint32_t *);
101*4dc78e53SAndroid Build Coastguard Worker 
102*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************************/
103*4dc78e53SAndroid Build Coastguard Worker 
104*4dc78e53SAndroid Build Coastguard Worker #endif
105