~ubuntu-branches/ubuntu/trusty/libnl3/trusty

« back to all changes in this revision

Viewing changes to lib/route/cls/police.c

  • Committer: Bazaar Package Importer
  • Author(s): Heiko Stuebner
  • Date: 2011-05-21 19:25:13 UTC
  • Revision ID: james.westby@ubuntu.com-20110521192513-1ieyu9w9kym4bt16
Tags: upstream-3.0
ImportĀ upstreamĀ versionĀ 3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * lib/route/cls/police.c       Policer
 
3
 *
 
4
 *      This library is free software; you can redistribute it and/or
 
5
 *      modify it under the terms of the GNU Lesser General Public
 
6
 *      License as published by the Free Software Foundation version 2.1
 
7
 *      of the License.
 
8
 *
 
9
 * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
 
10
 */
 
11
 
 
12
#include <netlink-local.h>
 
13
#include <netlink-tc.h>
 
14
#include <netlink/netlink.h>
 
15
#include <netlink/utils.h>
 
16
#include <netlink/route/tc-api.h>
 
17
#include <netlink/route/classifier.h>
 
18
#include <netlink/route/cls/police.h>
 
19
 
 
20
/**
 
21
 * @name Policer Type
 
22
 * @{
 
23
 */
 
24
 
 
25
static const struct trans_tbl police_types[] = {
 
26
        __ADD(TC_POLICE_UNSPEC,unspec)
 
27
        __ADD(TC_POLICE_OK,ok)
 
28
        __ADD(TC_POLICE_RECLASSIFY,reclassify)
 
29
        __ADD(TC_POLICE_SHOT,shot)
 
30
#ifdef TC_POLICE_PIPE
 
31
        __ADD(TC_POLICE_PIPE,pipe)
 
32
#endif
 
33
};
 
34
 
 
35
/**
 
36
 * Transform a policer type number into a character string (Reentrant).
 
37
 * @arg type            policer type
 
38
 * @arg buf             destination buffer
 
39
 * @arg len             buffer length
 
40
 *
 
41
 * Transforms a policer type number into a character string and stores
 
42
 * it in the provided buffer.
 
43
 *
 
44
 * @return The destination buffer or the type encoded in hex if no match was found.
 
45
 */
 
46
char * nl_police2str(int type, char *buf, size_t len)
 
47
{
 
48
        return __type2str(type, buf, len, police_types,
 
49
                          ARRAY_SIZE(police_types));
 
50
}
 
51
 
 
52
/**
 
53
 * Transform a character string into a policer type number
 
54
 * @arg name            policer type name
 
55
 *
 
56
 * Transform the provided character string specifying a policer
 
57
 * type into the corresponding numeric value
 
58
 *
 
59
 * @return Policer type number or a negative value.
 
60
 */
 
61
int nl_str2police(const char *name)
 
62
{
 
63
        return __str2type(name, police_types, ARRAY_SIZE(police_types));
 
64
}
 
65
 
 
66
/** @} */