FD.io VPP
v16.06
Vector Packet Processing
Main Page
Related Pages
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
u32
vlib_error_t
;
45
46
always_inline
u32
47
vlib_error_get_node
(
vlib_error_t
e)
48
{
return
e >> 12; }
49
50
always_inline
u32
51
vlib_error_get_code
(
vlib_error_t
e)
52
{
return
e & 0xfff; }
53
54
always_inline
vlib_error_t
55
vlib_error_set
(
u32
node_index,
u32
code)
56
{
57
ASSERT
(node_index < (1 << 20));
58
ASSERT
(code < (1 << 12));
59
return
(node_index << 12) | code;
60
}
61
62
always_inline
vlib_error_t
63
vlib_error_set_code
(
vlib_error_t
e,
u32
code)
64
{
65
ASSERT
(
vlib_error_get_code
(e) == 0);
66
ASSERT
(code < (1 << 12));
67
e |= code;
68
return
e;
69
}
70
71
typedef
struct
{
72
/* Error counters. */
73
u64
*
counters
;
74
75
/* Counter values as of last counter clear. */
76
u64
*
counters_last_clear
;
77
78
/* Error name strings in heap. Heap index
79
indexes counter vector. */
80
char
**
error_strings_heap
;
81
}
vlib_error_main_t
;
82
83
/* Per node error registration. */
84
void
vlib_register_errors
(
struct
vlib_main_t
* vm,
85
u32
node_index,
86
u32
n_errors,
87
char
* error_strings[]);
88
89
#endif
/* included_vlib_error_h */
vlib_error_get_node
always_inline u32 vlib_error_get_node(vlib_error_t e)
Definition:
error.h:47
vlib_error_main_t::counters_last_clear
u64 * counters_last_clear
Definition:
error.h:76
vlib_error_set_code
always_inline vlib_error_t vlib_error_set_code(vlib_error_t e, u32 code)
Definition:
error.h:63
always_inline
#define always_inline
Definition:
clib.h:84
vlib_error_get_code
always_inline u32 vlib_error_get_code(vlib_error_t e)
Definition:
error.h:51
u64
unsigned long u64
Definition:
types.h:89
vlib_register_errors
void vlib_register_errors(struct vlib_main_t *vm, u32 node_index, u32 n_errors, char *error_strings[])
Definition:
error.c:145
vlib_error_t
u32 vlib_error_t
Definition:
error.h:44
vlib_error_main_t::counters
u64 * counters
Definition:
error.h:73
vlib_error_main_t::error_strings_heap
char ** error_strings_heap
Definition:
error.h:80
ASSERT
#define ASSERT(truth)
Definition:
error_bootstrap.h:69
u32
unsigned int u32
Definition:
types.h:88
vlib_error_set
always_inline vlib_error_t vlib_error_set(u32 node_index, u32 code)
Definition:
error.h:55
vlib_main_t
Definition:
main.h:59
vlib_error_main_t
Definition:
error.h:71
vlib
vlib
error.h
Generated on Thu Sep 1 2016 09:11:55 for FD.io VPP by
1.8.11