xref: /aosp_15_r20/external/libnl/include/nl-priv-dynamic-route/nl-priv-dynamic-route.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-2013 Thomas Graf <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2013 Sassano Systems LLC <[email protected]>
5*4dc78e53SAndroid Build Coastguard Worker  */
6*4dc78e53SAndroid Build Coastguard Worker 
7*4dc78e53SAndroid Build Coastguard Worker #ifndef __NL_PRIVATE_TYPES_NL_ROUTE_H__
8*4dc78e53SAndroid Build Coastguard Worker #define __NL_PRIVATE_TYPES_NL_ROUTE_H__
9*4dc78e53SAndroid Build Coastguard Worker 
10*4dc78e53SAndroid Build Coastguard Worker struct rtnl_ematch {
11*4dc78e53SAndroid Build Coastguard Worker 	uint16_t e_id;
12*4dc78e53SAndroid Build Coastguard Worker 	uint16_t e_kind;
13*4dc78e53SAndroid Build Coastguard Worker 	uint16_t e_flags;
14*4dc78e53SAndroid Build Coastguard Worker 	uint16_t e_index;
15*4dc78e53SAndroid Build Coastguard Worker 	size_t e_datalen;
16*4dc78e53SAndroid Build Coastguard Worker 
17*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head e_childs;
18*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head e_list;
19*4dc78e53SAndroid Build Coastguard Worker 	struct rtnl_ematch_ops *e_ops;
20*4dc78e53SAndroid Build Coastguard Worker 
21*4dc78e53SAndroid Build Coastguard Worker 	void *e_data;
22*4dc78e53SAndroid Build Coastguard Worker };
23*4dc78e53SAndroid Build Coastguard Worker 
24*4dc78e53SAndroid Build Coastguard Worker struct rtnl_ematch_tree {
25*4dc78e53SAndroid Build Coastguard Worker 	uint16_t et_progid;
26*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head et_list;
27*4dc78e53SAndroid Build Coastguard Worker };
28*4dc78e53SAndroid Build Coastguard Worker 
29*4dc78e53SAndroid Build Coastguard Worker /*****************************************************************************/
30*4dc78e53SAndroid Build Coastguard Worker 
31*4dc78e53SAndroid Build Coastguard Worker /**
32*4dc78e53SAndroid Build Coastguard Worker  * Traffic control object operations
33*4dc78e53SAndroid Build Coastguard Worker  * @ingroup tc
34*4dc78e53SAndroid Build Coastguard Worker  *
35*4dc78e53SAndroid Build Coastguard Worker  * This structure holds function pointers and settings implementing
36*4dc78e53SAndroid Build Coastguard Worker  * the features of each traffic control object implementation.
37*4dc78e53SAndroid Build Coastguard Worker  */
38*4dc78e53SAndroid Build Coastguard Worker struct rtnl_tc_ops {
39*4dc78e53SAndroid Build Coastguard Worker 	/**
40*4dc78e53SAndroid Build Coastguard Worker 	 * Name of traffic control module
41*4dc78e53SAndroid Build Coastguard Worker 	 */
42*4dc78e53SAndroid Build Coastguard Worker 	char *to_kind;
43*4dc78e53SAndroid Build Coastguard Worker 
44*4dc78e53SAndroid Build Coastguard Worker 	/**
45*4dc78e53SAndroid Build Coastguard Worker 	 * Type of traffic control object
46*4dc78e53SAndroid Build Coastguard Worker 	 */
47*4dc78e53SAndroid Build Coastguard Worker 	enum rtnl_tc_type to_type;
48*4dc78e53SAndroid Build Coastguard Worker 
49*4dc78e53SAndroid Build Coastguard Worker 	/**
50*4dc78e53SAndroid Build Coastguard Worker 	 * Size of private data
51*4dc78e53SAndroid Build Coastguard Worker 	 */
52*4dc78e53SAndroid Build Coastguard Worker 	size_t to_size;
53*4dc78e53SAndroid Build Coastguard Worker 
54*4dc78e53SAndroid Build Coastguard Worker 	/**
55*4dc78e53SAndroid Build Coastguard Worker 	 * Dump callbacks
56*4dc78e53SAndroid Build Coastguard Worker 	 */
57*4dc78e53SAndroid Build Coastguard Worker 	void (*to_dump[NL_DUMP_MAX + 1])(struct rtnl_tc *, void *,
58*4dc78e53SAndroid Build Coastguard Worker 					 struct nl_dump_params *);
59*4dc78e53SAndroid Build Coastguard Worker 	/**
60*4dc78e53SAndroid Build Coastguard Worker 	 * Used to fill the contents of TCA_OPTIONS
61*4dc78e53SAndroid Build Coastguard Worker 	 */
62*4dc78e53SAndroid Build Coastguard Worker 	int (*to_msg_fill)(struct rtnl_tc *, void *, struct nl_msg *);
63*4dc78e53SAndroid Build Coastguard Worker 
64*4dc78e53SAndroid Build Coastguard Worker 	/**
65*4dc78e53SAndroid Build Coastguard Worker 	 * Uesd to to fill tc related messages, unlike with to_msg_fill,
66*4dc78e53SAndroid Build Coastguard Worker 	 * the contents is not encapsulated with a TCA_OPTIONS nested
67*4dc78e53SAndroid Build Coastguard Worker 	 * attribute.
68*4dc78e53SAndroid Build Coastguard Worker 	 */
69*4dc78e53SAndroid Build Coastguard Worker 	int (*to_msg_fill_raw)(struct rtnl_tc *, void *, struct nl_msg *);
70*4dc78e53SAndroid Build Coastguard Worker 
71*4dc78e53SAndroid Build Coastguard Worker 	/**
72*4dc78e53SAndroid Build Coastguard Worker 	 * TCA_OPTIONS message parser
73*4dc78e53SAndroid Build Coastguard Worker 	 */
74*4dc78e53SAndroid Build Coastguard Worker 	int (*to_msg_parser)(struct rtnl_tc *, void *);
75*4dc78e53SAndroid Build Coastguard Worker 
76*4dc78e53SAndroid Build Coastguard Worker 	/**
77*4dc78e53SAndroid Build Coastguard Worker 	 * Called before a tc object is destroyed
78*4dc78e53SAndroid Build Coastguard Worker 	 */
79*4dc78e53SAndroid Build Coastguard Worker 	void (*to_free_data)(struct rtnl_tc *, void *);
80*4dc78e53SAndroid Build Coastguard Worker 
81*4dc78e53SAndroid Build Coastguard Worker 	/**
82*4dc78e53SAndroid Build Coastguard Worker 	 * Called whenever a classifier object needs to be cloned
83*4dc78e53SAndroid Build Coastguard Worker 	 */
84*4dc78e53SAndroid Build Coastguard Worker 	int (*to_clone)(void *, void *);
85*4dc78e53SAndroid Build Coastguard Worker 
86*4dc78e53SAndroid Build Coastguard Worker 	/**
87*4dc78e53SAndroid Build Coastguard Worker 	 * Internal, don't touch
88*4dc78e53SAndroid Build Coastguard Worker 	 */
89*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head to_list;
90*4dc78e53SAndroid Build Coastguard Worker };
91*4dc78e53SAndroid Build Coastguard Worker 
92*4dc78e53SAndroid Build Coastguard Worker extern struct rtnl_tc_ops *rtnl_tc_lookup_ops(enum rtnl_tc_type, const char *);
93*4dc78e53SAndroid Build Coastguard Worker 
94*4dc78e53SAndroid Build Coastguard Worker struct rtnl_tc_ops *rtnl_tc_get_ops(struct rtnl_tc *);
95*4dc78e53SAndroid Build Coastguard Worker 
96*4dc78e53SAndroid Build Coastguard Worker struct rtnl_nexthop {
97*4dc78e53SAndroid Build Coastguard Worker 	uint8_t rtnh_flags;
98*4dc78e53SAndroid Build Coastguard Worker 	uint8_t rtnh_flag_mask;
99*4dc78e53SAndroid Build Coastguard Worker 	uint8_t rtnh_weight;
100*4dc78e53SAndroid Build Coastguard Worker 	/* 1 byte spare */
101*4dc78e53SAndroid Build Coastguard Worker 	uint32_t rtnh_ifindex;
102*4dc78e53SAndroid Build Coastguard Worker 	struct nl_addr *rtnh_gateway;
103*4dc78e53SAndroid Build Coastguard Worker 	uint32_t ce_mask; /* HACK to support attr macros */
104*4dc78e53SAndroid Build Coastguard Worker 	struct nl_list_head rtnh_list;
105*4dc78e53SAndroid Build Coastguard Worker 	uint32_t rtnh_realms;
106*4dc78e53SAndroid Build Coastguard Worker 	struct nl_addr *rtnh_newdst;
107*4dc78e53SAndroid Build Coastguard Worker 	struct nl_addr *rtnh_via;
108*4dc78e53SAndroid Build Coastguard Worker 	struct rtnl_nh_encap *rtnh_encap;
109*4dc78e53SAndroid Build Coastguard Worker };
110*4dc78e53SAndroid Build Coastguard Worker 
111*4dc78e53SAndroid Build Coastguard Worker #endif /* __NL_PRIVATE_TYPES_NL_ROUTE_H__ */
112