FD.io VPP
v21.10.1-2-g0a485f517
Vector Packet Processing
ppp.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
* ppp.h: types/functions for ppp.
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_ppp_h
41
#define included_ppp_h
42
43
#include <
vnet/vnet.h
>
44
#include <
vnet/ppp/packet.h
>
45
46
extern
vnet_hw_interface_class_t
ppp_hw_interface_class
;
47
48
typedef
enum
49
{
50
#define ppp_error(n,s) PPP_ERROR_##n,
51
#include <
vnet/ppp/error.def
>
52
#undef ppp_error
53
PPP_N_ERROR
,
54
}
ppp_error_t
;
55
56
typedef
struct
57
{
58
/* Name (a c string). */
59
char
*
name
;
60
61
/* PPP protocol type in host byte order. */
62
ppp_protocol_t
protocol
;
63
64
/* Node which handles this type. */
65
u32
node_index
;
66
67
/* Next index for this type. */
68
u32
next_index
;
69
}
ppp_protocol_info_t
;
70
71
typedef
struct
72
{
73
vlib_main_t
*
vlib_main
;
74
75
ppp_protocol_info_t
*
protocol_infos
;
76
77
/* Hash tables mapping name/protocol to protocol info index. */
78
uword
*protocol_info_by_name, *
protocol_info_by_protocol
;
79
}
ppp_main_t
;
80
81
always_inline
ppp_protocol_info_t
*
82
ppp_get_protocol_info
(
ppp_main_t
* em,
ppp_protocol_t
protocol
)
83
{
84
uword
*p =
hash_get
(em->
protocol_info_by_protocol
,
protocol
);
85
return
p ?
vec_elt_at_index
(em->
protocol_infos
, p[0]) : 0;
86
}
87
88
extern
ppp_main_t
ppp_main
;
89
90
/* Register given node index to take input for given ppp type. */
91
void
92
ppp_register_input_type
(
vlib_main_t
*
vm
,
93
ppp_protocol_t
protocol
,
u32
node_index
);
94
95
format_function_t
format_ppp_protocol
;
96
format_function_t
format_ppp_header
;
97
format_function_t
format_ppp_header_with_length
;
98
99
/* Parse ppp protocol as 0xXXXX or protocol name.
100
In either host or network byte order. */
101
unformat_function_t
unformat_ppp_protocol_host_byte_order
;
102
unformat_function_t
unformat_ppp_protocol_net_byte_order
;
103
104
/* Parse ppp header. */
105
unformat_function_t
unformat_ppp_header
;
106
unformat_function_t
unformat_pg_ppp_header
;
107
108
void
109
ppp_register_input_protocol
(
vlib_main_t
*
vm
,
110
ppp_protocol_t
protocol
,
u32
node_index
);
111
112
#endif
/* included_ppp_h */
113
114
/*
115
* fd.io coding-style-patch-verification: ON
116
*
117
* Local Variables:
118
* eval: (c-set-style "gnu")
119
* End:
120
*/
unformat_pg_ppp_header
unformat_function_t unformat_pg_ppp_header
Definition:
ppp.h:106
PPP_N_ERROR
@ PPP_N_ERROR
Definition:
ppp.h:53
ppp_main_t::protocol_info_by_protocol
uword * protocol_info_by_protocol
Definition:
ppp.h:78
format_ppp_header_with_length
format_function_t format_ppp_header_with_length
Definition:
ppp.h:97
vm
vlib_main_t * vm
X-connect all packets from the HOST to the PHY.
Definition:
nat44_ei.c:3047
node_index
node node_index
Definition:
interface_output.c:440
ppp_error_t
ppp_error_t
Definition:
ppp.h:48
ppp_protocol_info_t::next_index
u32 next_index
Definition:
ppp.h:68
unformat_ppp_protocol_host_byte_order
unformat_function_t unformat_ppp_protocol_host_byte_order
Definition:
ppp.h:101
ppp_main
ppp_main_t ppp_main
Definition:
ppp.c:44
ppp_main_t
Definition:
ppp.h:71
ppp_main_t::protocol_infos
ppp_protocol_info_t * protocol_infos
Definition:
ppp.h:75
error.def
format_ppp_protocol
format_function_t format_ppp_protocol
Definition:
ppp.h:95
format_ppp_header
format_function_t format_ppp_header
Definition:
ppp.h:96
ppp_register_input_type
void ppp_register_input_type(vlib_main_t *vm, ppp_protocol_t protocol, u32 node_index)
vec_elt_at_index
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
Definition:
vec_bootstrap.h:203
hash_get
#define hash_get(h, key)
Definition:
hash.h:249
uword
u64 uword
Definition:
types.h:112
ppp_protocol_info_t::node_index
u32 node_index
Definition:
ppp.h:65
unformat_ppp_protocol_net_byte_order
unformat_function_t unformat_ppp_protocol_net_byte_order
Definition:
ppp.h:102
unformat_ppp_header
unformat_function_t unformat_ppp_header
Definition:
ppp.h:105
ppp_protocol_info_t
Definition:
ppp.h:56
format_function_t
u8 *() format_function_t(u8 *s, va_list *args)
Definition:
format.h:48
always_inline
#define always_inline
Definition:
rdma_mlx5dv.h:23
ppp_hw_interface_class
vnet_hw_interface_class_t ppp_hw_interface_class
u32
unsigned int u32
Definition:
types.h:88
protocol
vl_api_ip_proto_t protocol
Definition:
lb_types.api:72
packet.h
unformat_function_t
uword() unformat_function_t(unformat_input_t *input, va_list *args)
Definition:
format.h:225
ppp_protocol_info_t::protocol
ppp_protocol_t protocol
Definition:
ppp.h:62
vlib_main_t
Definition:
main.h:102
ppp_protocol_info_t::name
char * name
Definition:
ppp.h:59
ppp_get_protocol_info
static ppp_protocol_info_t * ppp_get_protocol_info(ppp_main_t *em, ppp_protocol_t protocol)
Definition:
ppp.h:82
ppp_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
ppp.h:73
vnet.h
ppp_register_input_protocol
void ppp_register_input_protocol(vlib_main_t *vm, ppp_protocol_t protocol, u32 node_index)
Definition:
node.c:345
vnet_hw_interface_class_t
struct _vnet_hw_interface_class vnet_hw_interface_class_t
ppp_protocol_t
ppp_protocol_t
Definition:
packet.h:150
src
vnet
ppp
ppp.h
Generated on Sat Jan 8 2022 10:36:53 for FD.io VPP by
1.8.17