FD.io VPP
v18.01.2-1-g9b554f3
Vector Packet Processing
Main Page
Related Pages
Modules
Namespaces
Data Structures
Source
Files
Symbols
client.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
* client.h: dhcp client
17
*/
18
19
#ifndef included_dhcp_client_h
20
#define included_dhcp_client_h
21
22
#include <
vnet/ip/ip.h
>
23
#include <
vnet/dhcp/dhcp4_packet.h
>
24
25
#define foreach_dhcp_client_state \
26
_(DHCP_DISCOVER) \
27
_(DHCP_REQUEST) \
28
_(DHCP_BOUND)
29
30
typedef
enum
31
{
32
#define _(a) a,
33
foreach_dhcp_client_state
34
#undef _
35
}
dhcp_client_state_t
;
36
37
typedef
struct
38
{
39
dhcp_client_state_t
state
;
40
41
/* the interface in question */
42
u32
sw_if_index
;
43
44
/* State machine retry counter */
45
u32
retry_count
;
46
47
/* Send next pkt at this time */
48
f64
next_transmit
;
49
f64
lease_expires
;
50
51
/* DHCP transaction ID, a random number */
52
u32
transaction_id
;
53
54
/* leased address, other learned info DHCP */
55
ip4_address_t
leased_address
;
/* from your_ip_address field */
56
ip4_address_t
dhcp_server
;
57
u32
subnet_mask_width
;
/* option 1 */
58
ip4_address_t
router_address
;
/* option 3 */
59
u32
lease_renewal_interval
;
/* option 51 */
60
u32
lease_lifetime
;
/* option 59 */
61
62
/* Requested data (option 55) */
63
u8
*
option_55_data
;
64
65
u8
*
l2_rewrite
;
66
67
/* hostname and software client identifiers */
68
u8
*
hostname
;
69
u8
*
client_identifier
;
/* software version, e.g. vpe 1.0 */
70
71
/* Information used for event callback */
72
u32
client_index
;
73
u32
pid
;
74
void
*
event_callback
;
75
}
dhcp_client_t
;
76
77
typedef
struct
78
{
79
/* DHCP client pool */
80
dhcp_client_t
*
clients
;
81
uword
*
client_by_sw_if_index
;
82
u32
seed
;
83
84
/* convenience */
85
vlib_main_t
*
vlib_main
;
86
vnet_main_t
*
vnet_main
;
87
}
dhcp_client_main_t
;
88
89
typedef
struct
90
{
91
int
is_add
;
92
u32
sw_if_index
;
93
94
/* vectors, consumed by dhcp client code */
95
u8
*
hostname
;
96
u8
*
client_identifier
;
97
98
/* Bytes containing requested option numbers */
99
u8
*
option_55_data
;
100
101
/* Information used for event callback */
102
u32
client_index
;
103
u32
pid
;
104
void
*
event_callback
;
105
}
dhcp_client_add_del_args_t
;
106
107
extern
dhcp_client_main_t
dhcp_client_main
;
108
109
#define EVENT_DHCP_CLIENT_WAKEUP 1
110
111
int
dhcp_client_for_us
(
u32
bi0,
112
vlib_buffer_t
* b0,
113
ip4_header_t
* ip0,
114
udp_header_t
* u0,
dhcp_header_t
* dh0);
115
116
int
dhcp_client_config
(
vlib_main_t
*
vm
,
117
u32
sw_if_index,
118
u8
* hostname,
119
u8
* client_id,
120
u32
is_add,
121
u32
client_index,
void
*event_callback,
u32
pid);
122
123
#endif
/* included_dhcp_client_h */
124
125
/*
126
* fd.io coding-style-patch-verification: ON
127
*
128
* Local Variables:
129
* eval: (c-set-style "gnu")
130
* End:
131
*/
dhcp_client_add_del_args_t::client_identifier
u8 * client_identifier
Definition:
client.h:96
dhcp_client_main_t
Definition:
client.h:77
dhcp_client_main
dhcp_client_main_t dhcp_client_main
Definition:
client.c:20
dhcp_client_t::retry_count
u32 retry_count
Definition:
client.h:45
dhcp_client_add_del_args_t::is_add
int is_add
Definition:
client.h:91
dhcp_client_add_del_args_t::hostname
u8 * hostname
Definition:
client.h:95
dhcp_client_t::next_transmit
f64 next_transmit
Definition:
client.h:48
dhcp_client_add_del_args_t::pid
u32 pid
Definition:
client.h:103
dhcp_client_add_del_args_t::sw_if_index
u32 sw_if_index
Definition:
client.h:92
dhcp_client_t::transaction_id
u32 transaction_id
Definition:
client.h:52
dhcp_client_t::hostname
u8 * hostname
Definition:
client.h:68
dhcp_header_t
Definition:
dhcp4_packet.h:22
dhcp4_packet.h
dhcp_client_main_t::clients
dhcp_client_t * clients
Definition:
client.h:80
dhcp_client_add_del_args_t::client_index
u32 client_index
Definition:
client.h:102
ip.h
udp_header_t
Definition:
udp_packet.h:43
dhcp_client_add_del_args_t::event_callback
void * event_callback
Definition:
client.h:104
dhcp_client_t::lease_lifetime
u32 lease_lifetime
Definition:
client.h:60
dhcp_client_t::l2_rewrite
u8 * l2_rewrite
Definition:
client.h:65
dhcp_client_add_del_args_t::option_55_data
u8 * option_55_data
Definition:
client.h:99
foreach_dhcp_client_state
#define foreach_dhcp_client_state
Definition:
client.h:25
dhcp_client_t::client_index
u32 client_index
Definition:
client.h:72
ip4_address_t
Definition:
ip4_packet.h:49
dhcp_client_state_t
dhcp_client_state_t
Definition:
client.h:30
dhcp_client_main_t::seed
u32 seed
Definition:
client.h:82
dhcp_client_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
client.h:85
dhcp_client_add_del_args_t
Definition:
client.h:89
dhcp_client_for_us
int dhcp_client_for_us(u32 bi0, vlib_buffer_t *b0, ip4_header_t *ip0, udp_header_t *u0, dhcp_header_t *dh0)
Definition:
client.c:200
dhcp_client_t::subnet_mask_width
u32 subnet_mask_width
Definition:
client.h:57
dhcp_client_t
Definition:
client.h:37
vm
vlib_main_t * vm
Definition:
buffer.c:283
vlib_buffer_t
Definition:
buffer.h:62
dhcp_client_t::state
dhcp_client_state_t state
Definition:
client.h:39
dhcp_client_t::option_55_data
u8 * option_55_data
Definition:
client.h:63
vnet_main_t
Definition:
vnet.h:51
u32
unsigned int u32
Definition:
types.h:88
dhcp_client_t::lease_renewal_interval
u32 lease_renewal_interval
Definition:
client.h:59
dhcp_client_t::sw_if_index
u32 sw_if_index
Definition:
client.h:42
uword
u64 uword
Definition:
types.h:112
dhcp_client_t::lease_expires
f64 lease_expires
Definition:
client.h:49
f64
double f64
Definition:
types.h:142
u8
unsigned char u8
Definition:
types.h:56
dhcp_client_t::pid
u32 pid
Definition:
client.h:73
dhcp_client_t::dhcp_server
ip4_address_t dhcp_server
Definition:
client.h:56
vlib_main_t
Definition:
main.h:59
dhcp_client_main_t::client_by_sw_if_index
uword * client_by_sw_if_index
Definition:
client.h:81
dhcp_client_t::event_callback
void * event_callback
Definition:
client.h:74
dhcp_client_t::router_address
ip4_address_t router_address
Definition:
client.h:58
dhcp_client_main_t::vnet_main
vnet_main_t * vnet_main
Definition:
client.h:86
ip4_header_t
Definition:
ip4_packet.h:126
dhcp_client_config
int dhcp_client_config(vlib_main_t *vm, u32 sw_if_index, u8 *hostname, u8 *client_id, u32 is_add, u32 client_index, void *event_callback, u32 pid)
Definition:
client.c:966
dhcp_client_t::leased_address
ip4_address_t leased_address
Definition:
client.h:55
dhcp_client_t::client_identifier
u8 * client_identifier
Definition:
client.h:69
src
vnet
dhcp
client.h
Generated on Wed Sep 5 2018 06:02:30 for FD.io VPP by
1.8.11