FD.io VPP
v18.07.1-19-g511ce25
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Data Structures
Source
Files
Symbols
error.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015 Cisco and/or its affiliates.
3
* Licensed under the Apache License, Version 2.0 (the "License");
4
* you may not use this file except in compliance with the License.
5
* You may obtain a copy of the License at:
6
*
7
* http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
/*
16
* error.h: drop/punt error packets
17
*
18
* Copyright (c) 2008 Eliot Dresselhaus
19
*
20
* Permission is hereby granted, free of charge, to any person obtaining
21
* a copy of this software and associated documentation files (the
22
* "Software"), to deal in the Software without restriction, including
23
* without limitation the rights to use, copy, modify, merge, publish,
24
* distribute, sublicense, and/or sell copies of the Software, and to
25
* permit persons to whom the Software is furnished to do so, subject to
26
* the following conditions:
27
*
28
* The above copyright notice and this permission notice shall be
29
* included in all copies or substantial portions of the Software.
30
*
31
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
33
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
35
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
36
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
37
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38
*/
39
40
#ifndef included_vlib_error_h
41
#define included_vlib_error_h
42
43
/* Combined 16 bit node & 16 bit code as 32 bit number. */
44
typedef
u16
vlib_error_t
;
45
46
always_inline
u32
47
vlib_error_get_node
(
vlib_error_t
e)
48
{
49
return
e >> 6;
50
}
51
52
always_inline
u32
53
vlib_error_get_code
(
vlib_error_t
e)
54
{
55
return
e & 0x3f;
56
}
57
58
always_inline
vlib_error_t
59
vlib_error_set
(
u32
node_index,
u32
code)
60
{
61
ASSERT
(node_index < (1 << 10));
62
ASSERT
(code < (1 << 6));
63
return
(node_index << 6) | code;
64
}
65
66
always_inline
vlib_error_t
67
vlib_error_set_code
(
vlib_error_t
e,
u32
code)
68
{
69
ASSERT
(
vlib_error_get_code
(e) == 0);
70
ASSERT
(code < (1 << 6));
71
e |= code;
72
return
e;
73
}
74
75
typedef
struct
76
{
77
/* Error counters. */
78
u64
*
counters
;
79
80
/* Counter values as of last counter clear. */
81
u64
*
counters_last_clear
;
82
83
/* Error name strings in heap. Heap index
84
indexes counter vector. */
85
char
**
error_strings_heap
;
86
}
vlib_error_main_t
;
87
88
/* Per node error registration. */
89
void
vlib_register_errors
(
struct
vlib_main_t
*
vm
,
90
u32
node_index,
91
u32
n_errors,
char
*error_strings[]);
92
93
#endif
/* included_vlib_error_h */
94
95
/*
96
* fd.io coding-style-patch-verification: ON
97
*
98
* Local Variables:
99
* eval: (c-set-style "gnu")
100
* End:
101
*/
u64
unsigned long u64
Definition:
types.h:89
vlib_error_t
u16 vlib_error_t
Definition:
error.h:44
vlib_error_main_t::counters_last_clear
u64 * counters_last_clear
Definition:
error.h:81
always_inline
#define always_inline
Definition:
clib.h:92
vlib_register_errors
void vlib_register_errors(struct vlib_main_t *vm, u32 node_index, u32 n_errors, char *error_strings[])
Definition:
error.c:158
u32
unsigned int u32
Definition:
types.h:88
vlib_error_set
static vlib_error_t vlib_error_set(u32 node_index, u32 code)
Definition:
error.h:59
u16
unsigned short u16
Definition:
types.h:57
vlib_error_get_code
static u32 vlib_error_get_code(vlib_error_t e)
Definition:
error.h:53
vlib_error_main_t::counters
u64 * counters
Definition:
error.h:78
vlib_error_set_code
static vlib_error_t vlib_error_set_code(vlib_error_t e, u32 code)
Definition:
error.h:67
vlib_error_main_t::error_strings_heap
char ** error_strings_heap
Definition:
error.h:85
vm
vlib_main_t * vm
Definition:
buffer.c:294
ASSERT
#define ASSERT(truth)
Definition:
error_bootstrap.h:69
vlib_main_t
Definition:
main.h:59
vlib_error_main_t
Definition:
error.h:75
vlib_error_get_node
static u32 vlib_error_get_node(vlib_error_t e)
Definition:
error.h:47
src
vlib
error.h
Generated on Fri May 24 2019 10:27:02 for FD.io VPP by
1.8.11