xref: /aosp_15_r20/external/libnl/lib/route/cls/police.c (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  */
5*4dc78e53SAndroid Build Coastguard Worker 
6*4dc78e53SAndroid Build Coastguard Worker #include "nl-default.h"
7*4dc78e53SAndroid Build Coastguard Worker 
8*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h>
9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/utils.h>
10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/classifier.h>
11*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/cls/police.h>
12*4dc78e53SAndroid Build Coastguard Worker 
13*4dc78e53SAndroid Build Coastguard Worker #include "nl-priv-dynamic-core/nl-core.h"
14*4dc78e53SAndroid Build Coastguard Worker 
15*4dc78e53SAndroid Build Coastguard Worker /**
16*4dc78e53SAndroid Build Coastguard Worker  * @name Policer Type
17*4dc78e53SAndroid Build Coastguard Worker  * @{
18*4dc78e53SAndroid Build Coastguard Worker  */
19*4dc78e53SAndroid Build Coastguard Worker 
20*4dc78e53SAndroid Build Coastguard Worker static const struct trans_tbl police_types[] = {
21*4dc78e53SAndroid Build Coastguard Worker 	__ADD(TC_POLICE_UNSPEC,unspec),
22*4dc78e53SAndroid Build Coastguard Worker 	__ADD(TC_POLICE_OK,ok),
23*4dc78e53SAndroid Build Coastguard Worker 	__ADD(TC_POLICE_RECLASSIFY,reclassify),
24*4dc78e53SAndroid Build Coastguard Worker 	__ADD(TC_POLICE_SHOT,shot),
25*4dc78e53SAndroid Build Coastguard Worker #ifdef TC_POLICE_PIPE
26*4dc78e53SAndroid Build Coastguard Worker 	__ADD(TC_POLICE_PIPE,pipe),
27*4dc78e53SAndroid Build Coastguard Worker #endif
28*4dc78e53SAndroid Build Coastguard Worker };
29*4dc78e53SAndroid Build Coastguard Worker 
30*4dc78e53SAndroid Build Coastguard Worker /**
31*4dc78e53SAndroid Build Coastguard Worker  * Transform a policer type number into a character string (Reentrant).
32*4dc78e53SAndroid Build Coastguard Worker  * @arg type		policer type
33*4dc78e53SAndroid Build Coastguard Worker  * @arg buf		destination buffer
34*4dc78e53SAndroid Build Coastguard Worker  * @arg len		buffer length
35*4dc78e53SAndroid Build Coastguard Worker  *
36*4dc78e53SAndroid Build Coastguard Worker  * Transforms a policer type number into a character string and stores
37*4dc78e53SAndroid Build Coastguard Worker  * it in the provided buffer.
38*4dc78e53SAndroid Build Coastguard Worker  *
39*4dc78e53SAndroid Build Coastguard Worker  * @return The destination buffer or the type encoded in hex if no match was found.
40*4dc78e53SAndroid Build Coastguard Worker  */
nl_police2str(int type,char * buf,size_t len)41*4dc78e53SAndroid Build Coastguard Worker char * nl_police2str(int type, char *buf, size_t len)
42*4dc78e53SAndroid Build Coastguard Worker {
43*4dc78e53SAndroid Build Coastguard Worker 	return __type2str(type, buf, len, police_types,
44*4dc78e53SAndroid Build Coastguard Worker 			  ARRAY_SIZE(police_types));
45*4dc78e53SAndroid Build Coastguard Worker }
46*4dc78e53SAndroid Build Coastguard Worker 
47*4dc78e53SAndroid Build Coastguard Worker /**
48*4dc78e53SAndroid Build Coastguard Worker  * Transform a character string into a policer type number
49*4dc78e53SAndroid Build Coastguard Worker  * @arg name		policer type name
50*4dc78e53SAndroid Build Coastguard Worker  *
51*4dc78e53SAndroid Build Coastguard Worker  * Transform the provided character string specifying a policer
52*4dc78e53SAndroid Build Coastguard Worker  * type into the corresponding numeric value
53*4dc78e53SAndroid Build Coastguard Worker  *
54*4dc78e53SAndroid Build Coastguard Worker  * @return Policer type number or a negative value.
55*4dc78e53SAndroid Build Coastguard Worker  */
nl_str2police(const char * name)56*4dc78e53SAndroid Build Coastguard Worker int nl_str2police(const char *name)
57*4dc78e53SAndroid Build Coastguard Worker {
58*4dc78e53SAndroid Build Coastguard Worker 	return __str2type(name, police_types, ARRAY_SIZE(police_types));
59*4dc78e53SAndroid Build Coastguard Worker }
60*4dc78e53SAndroid Build Coastguard Worker 
61*4dc78e53SAndroid Build Coastguard Worker /** @} */
62