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