forked from zephyrproject-rtos/zephyr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnet_event.h
244 lines (192 loc) · 6.38 KB
/
net_event.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
/*
* Copyright (c) 2016 Intel Corporation.
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Network Events code public header
*/
#ifndef ZEPHYR_INCLUDE_NET_NET_EVENT_H_
#define ZEPHYR_INCLUDE_NET_NET_EVENT_H_
#include <net/net_ip.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @addtogroup net_mgmt
* @{
*/
/** @cond INTERNAL_HIDDEN */
/* Network Interface events */
#define _NET_IF_LAYER NET_MGMT_LAYER_L2
#define _NET_IF_CORE_CODE 0x001
#define _NET_EVENT_IF_BASE (NET_MGMT_EVENT_BIT | \
NET_MGMT_IFACE_BIT | \
NET_MGMT_LAYER(_NET_IF_LAYER) | \
NET_MGMT_LAYER_CODE(_NET_IF_CORE_CODE))
enum net_event_if_cmd {
NET_EVENT_IF_CMD_DOWN = 1,
NET_EVENT_IF_CMD_UP,
};
#define NET_EVENT_IF_DOWN \
(_NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_DOWN)
#define NET_EVENT_IF_UP \
(_NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_UP)
/* IPv6 Events */
#define _NET_IPV6_LAYER NET_MGMT_LAYER_L3
#define _NET_IPV6_CORE_CODE 0x060
#define _NET_EVENT_IPV6_BASE (NET_MGMT_EVENT_BIT | \
NET_MGMT_IFACE_BIT | \
NET_MGMT_LAYER(_NET_IPV6_LAYER) | \
NET_MGMT_LAYER_CODE(_NET_IPV6_CORE_CODE))
enum net_event_ipv6_cmd {
NET_EVENT_IPV6_CMD_ADDR_ADD = 1,
NET_EVENT_IPV6_CMD_ADDR_DEL,
NET_EVENT_IPV6_CMD_MADDR_ADD,
NET_EVENT_IPV6_CMD_MADDR_DEL,
NET_EVENT_IPV6_CMD_PREFIX_ADD,
NET_EVENT_IPV6_CMD_PREFIX_DEL,
NET_EVENT_IPV6_CMD_MCAST_JOIN,
NET_EVENT_IPV6_CMD_MCAST_LEAVE,
NET_EVENT_IPV6_CMD_ROUTER_ADD,
NET_EVENT_IPV6_CMD_ROUTER_DEL,
NET_EVENT_IPV6_CMD_ROUTE_ADD,
NET_EVENT_IPV6_CMD_ROUTE_DEL,
NET_EVENT_IPV6_CMD_DAD_SUCCEED,
NET_EVENT_IPV6_CMD_DAD_FAILED,
NET_EVENT_IPV6_CMD_NBR_ADD,
NET_EVENT_IPV6_CMD_NBR_DEL,
};
#define NET_EVENT_IPV6_ADDR_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_ADD)
#define NET_EVENT_IPV6_ADDR_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_DEL)
#define NET_EVENT_IPV6_MADDR_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_ADD)
#define NET_EVENT_IPV6_MADDR_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_DEL)
#define NET_EVENT_IPV6_PREFIX_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_ADD)
#define NET_EVENT_IPV6_PREFIX_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_DEL)
#define NET_EVENT_IPV6_MCAST_JOIN \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_JOIN)
#define NET_EVENT_IPV6_MCAST_LEAVE \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_LEAVE)
#define NET_EVENT_IPV6_ROUTER_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_ADD)
#define NET_EVENT_IPV6_ROUTER_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_DEL)
#define NET_EVENT_IPV6_ROUTE_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_ADD)
#define NET_EVENT_IPV6_ROUTE_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_DEL)
#define NET_EVENT_IPV6_DAD_SUCCEED \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_SUCCEED)
#define NET_EVENT_IPV6_DAD_FAILED \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_FAILED)
#define NET_EVENT_IPV6_NBR_ADD \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_ADD)
#define NET_EVENT_IPV6_NBR_DEL \
(_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_DEL)
/* IPv4 Events*/
#define _NET_IPV4_LAYER NET_MGMT_LAYER_L3
#define _NET_IPV4_CORE_CODE 0x004
#define _NET_EVENT_IPV4_BASE (NET_MGMT_EVENT_BIT | \
NET_MGMT_IFACE_BIT | \
NET_MGMT_LAYER(_NET_IPV4_LAYER) | \
NET_MGMT_LAYER_CODE(_NET_IPV4_CORE_CODE))
enum net_event_ipv4_cmd {
NET_EVENT_IPV4_CMD_ADDR_ADD = 1,
NET_EVENT_IPV4_CMD_ADDR_DEL,
NET_EVENT_IPV4_CMD_ROUTER_ADD,
NET_EVENT_IPV4_CMD_ROUTER_DEL,
NET_EVENT_IPV4_CMD_DHCP_START,
NET_EVENT_IPV4_CMD_DHCP_BOUND,
NET_EVENT_IPV4_CMD_DHCP_STOP,
};
#define NET_EVENT_IPV4_ADDR_ADD \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_ADD)
#define NET_EVENT_IPV4_ADDR_DEL \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_DEL)
#define NET_EVENT_IPV4_ROUTER_ADD \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_ADD)
#define NET_EVENT_IPV4_ROUTER_DEL \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_DEL)
#define NET_EVENT_IPV4_DHCP_START \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_START)
#define NET_EVENT_IPV4_DHCP_BOUND \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_BOUND)
#define NET_EVENT_IPV4_DHCP_STOP \
(_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_STOP)
/* L4 network events */
#define _NET_L4_LAYER NET_MGMT_LAYER_L4
#define _NET_L4_CORE_CODE 0x114
#define _NET_EVENT_L4_BASE (NET_MGMT_EVENT_BIT | \
NET_MGMT_IFACE_BIT | \
NET_MGMT_LAYER(_NET_L4_LAYER) | \
NET_MGMT_LAYER_CODE(_NET_L4_CORE_CODE))
enum net_event_l4_cmd {
NET_EVENT_L4_CMD_CONNECTED = 1,
NET_EVENT_L4_CMD_DISCONNECTED,
NET_EVENT_L4_CMD_DNS_SERVER_ADD,
NET_EVENT_L4_CMD_DNS_SERVER_DEL,
};
#define NET_EVENT_L4_CONNECTED \
(_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_CONNECTED)
#define NET_EVENT_L4_DISCONNECTED \
(_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DISCONNECTED)
#define NET_EVENT_DNS_SERVER_ADD \
(_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_ADD)
#define NET_EVENT_DNS_SERVER_DEL \
(_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_DEL)
/** @endcond */
#ifdef CONFIG_NET_MGMT_EVENT_INFO
/**
* @brief Network Management event information structure
* Used to pass information on network events like
* NET_EVENT_IPV6_ADDR_ADD,
* NET_EVENT_IPV6_ADDR_DEL,
* NET_EVENT_IPV6_MADDR_ADD and
* NET_EVENT_IPV6_MADDR_DEL
* when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
* information.
*/
struct net_event_ipv6_addr {
struct in6_addr addr;
};
/**
* @brief Network Management event information structure
* Used to pass information on network events like
* NET_EVENT_IPV6_NBR_ADD and
* NET_EVENT_IPV6_NBR_DEL
* when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
* information.
* @Note: idx will be '-1' in case of NET_EVENT_IPV6_NBR_DEL event.
*/
struct net_event_ipv6_nbr {
struct in6_addr addr;
int idx; /* NBR index*/
};
/**
* @brief Network Management event information structure
* Used to pass information on network events like
* NET_EVENT_IPV6_ROUTE_ADD and
* NET_EVENT_IPV6_ROUTE_DEL
* when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
* information.
*/
struct net_event_ipv6_route {
struct in6_addr nexthop;
struct in6_addr addr; /* addr/prefix */
uint8_t prefix_len;
};
#endif /* CONFIG_NET_MGMT_EVENT_INFO */
#ifdef __cplusplus
}
#endif
/**
* @}
*/
#endif /* ZEPHYR_INCLUDE_NET_NET_EVENT_H_ */