FD.io VPP
v17.04-9-g99c0734
Vector Packet Processing
Main Page
Related Pages
Data Structures
Source
Files
Symbols
FD.io VPP
Vector Packet Processing
Release Notes
Debug CLI
Startup Configuration
Todo List
Node Identifiers
Data Structures
Source
Files
Symbols
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
cdp_node.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2011-2016 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
#ifndef __included_cdp_node_h__
16
#define __included_cdp_node_h__
17
18
#include <
vlib/vlib.h
>
19
#include <
vlib/unix/unix.h
>
20
21
#include <
vnet/snap/snap.h
>
22
#include <
vnet/hdlc/hdlc.h
>
23
#include <
vnet/hdlc/packet.h
>
24
25
#include <
vppinfra/format.h
>
26
#include <
vppinfra/hash.h
>
27
28
#include <
vnet/cdp/cdp_protocol.h
>
29
30
typedef
enum
31
{
32
CDP_PACKET_TEMPLATE_ETHERNET
,
33
CDP_PACKET_TEMPLATE_HDLC
,
34
CDP_PACKET_TEMPLATE_SRP
,
35
CDP_N_PACKET_TEMPLATES
,
36
}
cdp_packet_template_id_t
;
37
38
typedef
struct
39
{
40
/* neighbor's vlib software interface index */
41
u32
sw_if_index
;
42
43
/* Timers */
44
f64
last_heard
;
45
f64
last_sent
;
46
47
/* Neighbor time-to-live (usually 180s) */
48
u8
ttl_in_seconds
;
49
50
/* "no cdp run" or similar */
51
u8
disabled
;
52
53
/* tx packet template id for this neighbor */
54
u8
packet_template_index
;
55
56
/* Jenkins hash optimization: avoid tlv scan, send short keepalive msg */
57
u8
last_packet_signature_valid
;
58
uword
last_packet_signature
;
59
60
/* Info we actually keep about each neighbor */
61
u8
*
device_name
;
62
u8
*
version
;
63
u8
*
port_id
;
64
u8
*
platform
;
65
66
/* last received packet, for the J-hash optimization */
67
u8
*
last_rx_pkt
;
68
}
cdp_neighbor_t
;
69
70
#define foreach_neighbor_string_field \
71
_(device_name) \
72
_(version) \
73
_(port_id) \
74
_(platform)
75
76
typedef
struct
77
{
78
/* pool of cdp neighbors */
79
cdp_neighbor_t
*
neighbors
;
80
81
/* tx pcap debug enable */
82
u8
tx_pcap_debug
;
83
84
/* rapidly find a neighbor by vlib software interface index */
85
uword
*
neighbor_by_sw_if_index
;
86
87
/* Background process node index */
88
u32
cdp_process_node_index
;
89
90
/* Packet templates for different encap types */
91
vlib_packet_template_t
packet_templates[
CDP_N_PACKET_TEMPLATES
];
92
93
/* convenience variables */
94
vlib_main_t
*
vlib_main
;
95
vnet_main_t
*
vnet_main
;
96
}
cdp_main_t
;
97
98
cdp_main_t
cdp_main
;
99
100
/* Packet counters */
101
#define foreach_cdp_error \
102
_ (NONE, "good cdp packets (processed)") \
103
_ (CACHE_HIT, "good cdp packets (cache hit)") \
104
_ (BAD_TLV, "cdp packets with bad TLVs") \
105
_ (PROTOCOL_VERSION, "cdp packets with bad protocol versions") \
106
_ (CHECKSUM, "cdp packets with bad checksums") \
107
_ (DISABLED, "cdp packets received on disabled interfaces")
108
109
typedef
enum
110
{
111
#define _(sym,str) CDP_ERROR_##sym,
112
foreach_cdp_error
113
#undef _
114
CDP_N_ERROR
,
115
}
cdp_error_t
;
116
117
/* cdp packet trace capture */
118
typedef
struct
119
{
120
u32
len
;
121
u8
data[400];
122
}
cdp_input_trace_t
;
123
124
typedef
enum
125
{
126
CDP_EVENT_SEND_NEIGHBOR
,
127
CDP_EVENT_SEND_KEEPALIVE
,
128
}
cdp_process_event_t
;
129
130
131
cdp_error_t
cdp_input
(
vlib_main_t
*
vm
,
vlib_buffer_t
* b0,
u32
bi0);
132
void
cdp_periodic
(
vlib_main_t
*
vm
);
133
void
cdp_keepalive
(
cdp_main_t
* cm,
cdp_neighbor_t
* n);
134
u16
cdp_checksum
(
void
*p,
int
count);
135
u8
*
cdp_input_format_trace
(
u8
* s, va_list * args);
136
137
serialize_function_t
serialize_cdp_main
,
unserialize_cdp_main
;
138
139
#endif
/* __included_cdp_node_h__ */
140
141
/*
142
* fd.io coding-style-patch-verification: ON
143
*
144
* Local Variables:
145
* eval: (c-set-style "gnu")
146
* End:
147
*/
cdp_checksum
u16 cdp_checksum(void *p, int count)
Definition:
cdp_input.c:30
CDP_EVENT_SEND_KEEPALIVE
Definition:
cdp_node.h:127
cdp_protocol.h
cdp_input
cdp_error_t cdp_input(vlib_main_t *vm, vlib_buffer_t *b0, u32 bi0)
Definition:
cdp_input.c:301
cdp_error_t
cdp_error_t
Definition:
cdp_node.h:109
cdp_neighbor_t::last_sent
f64 last_sent
Definition:
cdp_node.h:45
cdp_process_event_t
cdp_process_event_t
Definition:
cdp_node.h:124
cdp_neighbor_t::version
u8 * version
Definition:
cdp_node.h:62
cdp_main_t::cdp_process_node_index
u32 cdp_process_node_index
Definition:
cdp_node.h:88
cdp_neighbor_t::packet_template_index
u8 packet_template_index
Definition:
cdp_node.h:54
hash.h
cdp_main_t::neighbor_by_sw_if_index
uword * neighbor_by_sw_if_index
Definition:
cdp_node.h:85
vlib_packet_template_t
Definition:
buffer_funcs.h:708
cdp_neighbor_t::last_packet_signature_valid
u8 last_packet_signature_valid
Definition:
cdp_node.h:57
CDP_EVENT_SEND_NEIGHBOR
Definition:
cdp_node.h:126
foreach_cdp_error
#define foreach_cdp_error
Definition:
cdp_node.h:101
cdp_main_t::vnet_main
vnet_main_t * vnet_main
Definition:
cdp_node.h:95
unix.h
cdp_neighbor_t::last_heard
f64 last_heard
Definition:
cdp_node.h:44
cdp_main_t::neighbors
cdp_neighbor_t * neighbors
Definition:
cdp_node.h:79
format.h
serialize_cdp_main
serialize_function_t serialize_cdp_main
Definition:
cdp_node.h:137
cdp_input_format_trace
u8 * cdp_input_format_trace(u8 *s, va_list *args)
Definition:
cdp_input.c:462
cdp_neighbor_t::last_packet_signature
uword last_packet_signature
Definition:
cdp_node.h:58
cdp_main_t::tx_pcap_debug
u8 tx_pcap_debug
Definition:
cdp_node.h:82
CDP_PACKET_TEMPLATE_SRP
Definition:
cdp_node.h:34
cdp_periodic
void cdp_periodic(vlib_main_t *vm)
Definition:
cdp_periodic.c:341
vm
vlib_main_t * vm
Definition:
buffer.c:276
packet.h
cdp_neighbor_t::last_rx_pkt
u8 * last_rx_pkt
Definition:
cdp_node.h:67
vlib_buffer_t
Definition:
buffer.h:61
cdp_neighbor_t::device_name
u8 * device_name
Definition:
cdp_node.h:61
unserialize_cdp_main
serialize_function_t unserialize_cdp_main
Definition:
cdp_node.h:137
CDP_N_PACKET_TEMPLATES
Definition:
cdp_node.h:35
cdp_neighbor_t::ttl_in_seconds
u8 ttl_in_seconds
Definition:
cdp_node.h:48
hdlc.h
vlib.h
vnet_main_t
Definition:
vnet.h:52
CDP_N_ERROR
Definition:
cdp_node.h:114
u32
unsigned int u32
Definition:
types.h:88
cdp_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
cdp_node.h:94
cdp_keepalive
void cdp_keepalive(cdp_main_t *cm, cdp_neighbor_t *n)
cdp_packet_template_id_t
cdp_packet_template_id_t
Definition:
cdp_node.h:30
uword
u64 uword
Definition:
types.h:112
cdp_neighbor_t::disabled
u8 disabled
Definition:
cdp_node.h:51
u16
unsigned short u16
Definition:
types.h:57
cdp_input_trace_t
Definition:
cdp_node.h:118
f64
double f64
Definition:
types.h:142
serialize_function_t
void( serialize_function_t)(serialize_main_t *m, va_list *va)
Definition:
serialize.h:168
u8
unsigned char u8
Definition:
types.h:56
cdp_neighbor_t::port_id
u8 * port_id
Definition:
cdp_node.h:63
vlib_main_t
Definition:
main.h:59
cdp_main_t
Definition:
cdp_node.h:76
cdp_input_trace_t::len
u32 len
Definition:
cdp_node.h:120
cdp_neighbor_t::platform
u8 * platform
Definition:
cdp_node.h:64
cdp_neighbor_t
Definition:
cdp_node.h:38
cdp_main
cdp_main_t cdp_main
Definition:
cdp_node.h:98
CDP_PACKET_TEMPLATE_HDLC
Definition:
cdp_node.h:33
cdp_neighbor_t::sw_if_index
u32 sw_if_index
Definition:
cdp_node.h:41
snap.h
CDP_PACKET_TEMPLATE_ETHERNET
Definition:
cdp_node.h:32
src
vnet
cdp
cdp_node.h
Generated on Mon May 15 2017 20:50:02 for FD.io VPP by
1.8.11