FD.io VPP
v17.07.01-10-g3be13f0
Vector Packet Processing
Main Page
Related Pages
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
#define _(a) a,
32
foreach_dhcp_client_state
33
#undef _
34
}
dhcp_client_state_t
;
35
36
typedef
struct
{
37
dhcp_client_state_t
state
;
38
39
/* the interface in question */
40
u32
sw_if_index
;
41
42
/* State machine retry counter */
43
u32
retry_count
;
44
45
/* Send next pkt at this time */
46
f64
next_transmit
;
47
f64
lease_expires
;
48
49
/* DHCP transaction ID, a random number */
50
u32
transaction_id
;
51
52
/* leased address, other learned info DHCP */
53
ip4_address_t
leased_address
;
/* from your_ip_address field */
54
ip4_address_t
dhcp_server
;
55
u32
subnet_mask_width
;
/* option 1 */
56
ip4_address_t
router_address
;
/* option 3 */
57
u32
lease_renewal_interval
;
/* option 51 */
58
u32
lease_lifetime
;
/* option 59 */
59
60
/* Requested data (option 55) */
61
u8
*
option_55_data
;
62
63
u8
*
l2_rewrite
;
64
65
/* hostname and software client identifiers */
66
u8
*
hostname
;
67
u8
*
client_identifier
;
/* software version, e.g. vpe 1.0*/
68
69
/* Information used for event callback */
70
u32
client_index
;
71
u32
pid
;
72
void
*
event_callback
;
73
}
dhcp_client_t
;
74
75
typedef
struct
{
76
/* DHCP client pool */
77
dhcp_client_t
*
clients
;
78
uword
*
client_by_sw_if_index
;
79
u32
seed
;
80
81
/* convenience */
82
vlib_main_t
*
vlib_main
;
83
vnet_main_t
*
vnet_main
;
84
}
dhcp_client_main_t
;
85
86
typedef
struct
{
87
int
is_add
;
88
u32
sw_if_index
;
89
90
/* vectors, consumed by dhcp client code */
91
u8
*
hostname
;
92
u8
*
client_identifier
;
93
94
/* Bytes containing requested option numbers */
95
u8
*
option_55_data
;
96
97
/* Information used for event callback */
98
u32
client_index
;
99
u32
pid
;
100
void
*
event_callback
;
101
}
dhcp_client_add_del_args_t
;
102
103
dhcp_client_main_t
dhcp_client_main
;
104
105
#define EVENT_DHCP_CLIENT_WAKEUP 1
106
107
int
dhcp_client_for_us
(
u32
bi0,
108
vlib_buffer_t
* b0,
109
ip4_header_t
* ip0,
110
udp_header_t
* u0,
111
dhcp_header_t
* dh0);
112
113
int
dhcp_client_config
(
vlib_main_t
* vm,
114
u32
sw_if_index,
115
u8
* hostname,
116
u32
is_add,
117
u32
client_index,
118
void
*event_callback,
119
u32
pid);
120
121
#endif
/* included_dhcp_client_h */
dhcp_client_add_del_args_t::client_identifier
u8 * client_identifier
Definition:
client.h:92
dhcp_client_main_t
Definition:
client.h:75
dhcp_client_main
dhcp_client_main_t dhcp_client_main
Definition:
client.h:103
dhcp_client_t::retry_count
u32 retry_count
Definition:
client.h:43
dhcp_client_add_del_args_t::is_add
int is_add
Definition:
client.h:87
dhcp_client_add_del_args_t::hostname
u8 * hostname
Definition:
client.h:91
dhcp_client_t::next_transmit
f64 next_transmit
Definition:
client.h:46
dhcp_client_add_del_args_t::pid
u32 pid
Definition:
client.h:99
dhcp_client_add_del_args_t::sw_if_index
u32 sw_if_index
Definition:
client.h:88
dhcp_client_t::transaction_id
u32 transaction_id
Definition:
client.h:50
dhcp_client_t::hostname
u8 * hostname
Definition:
client.h:66
dhcp_header_t
Definition:
dhcp4_packet.h:22
dhcp4_packet.h
dhcp_client_main_t::clients
dhcp_client_t * clients
Definition:
client.h:77
dhcp_client_add_del_args_t::client_index
u32 client_index
Definition:
client.h:98
ip.h
udp_header_t
Definition:
udp_packet.h:43
dhcp_client_add_del_args_t::event_callback
void * event_callback
Definition:
client.h:100
dhcp_client_t::lease_lifetime
u32 lease_lifetime
Definition:
client.h:58
dhcp_client_t::l2_rewrite
u8 * l2_rewrite
Definition:
client.h:63
dhcp_client_add_del_args_t::option_55_data
u8 * option_55_data
Definition:
client.h:95
foreach_dhcp_client_state
#define foreach_dhcp_client_state
Definition:
client.h:25
dhcp_client_t::client_index
u32 client_index
Definition:
client.h:70
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:79
dhcp_client_main_t::vlib_main
vlib_main_t * vlib_main
Definition:
client.h:82
dhcp_client_add_del_args_t
Definition:
client.h:86
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:66
dhcp_client_t::subnet_mask_width
u32 subnet_mask_width
Definition:
client.h:55
dhcp_client_t
Definition:
client.h:36
vlib_buffer_t
Definition:
buffer.h:61
dhcp_client_t::state
dhcp_client_state_t state
Definition:
client.h:37
dhcp_client_t::option_55_data
u8 * option_55_data
Definition:
client.h:61
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:57
dhcp_client_t::sw_if_index
u32 sw_if_index
Definition:
client.h:40
dhcp_client_config
int dhcp_client_config(vlib_main_t *vm, u32 sw_if_index, u8 *hostname, u32 is_add, u32 client_index, void *event_callback, u32 pid)
Definition:
client.c:837
uword
u64 uword
Definition:
types.h:112
dhcp_client_t::lease_expires
f64 lease_expires
Definition:
client.h:47
f64
double f64
Definition:
types.h:142
u8
unsigned char u8
Definition:
types.h:56
dhcp_client_t::pid
u32 pid
Definition:
client.h:71
dhcp_client_t::dhcp_server
ip4_address_t dhcp_server
Definition:
client.h:54
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:78
dhcp_client_t::event_callback
void * event_callback
Definition:
client.h:72
dhcp_client_t::router_address
ip4_address_t router_address
Definition:
client.h:56
dhcp_client_main_t::vnet_main
vnet_main_t * vnet_main
Definition:
client.h:83
ip4_header_t
Definition:
ip4_packet.h:126
dhcp_client_t::leased_address
ip4_address_t leased_address
Definition:
client.h:53
dhcp_client_t::client_identifier
u8 * client_identifier
Definition:
client.h:67
src
vnet
dhcp
client.h
Generated on Tue Nov 7 2017 14:26:12 for FD.io VPP by
1.8.11