FD.io VPP
v17.04.2-2-ga8f93f8
Vector Packet Processing
Main Page
Related Pages
Data Structures
Source
Files
Symbols
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 Sat Jul 1 2017 12:01:54 for FD.io VPP by
1.8.11