Line data Source code
1 1 : /*
2 : * Copyright (c) 2016 Intel Corporation.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Network Events code public header
10 : */
11 :
12 : #ifndef ZEPHYR_INCLUDE_NET_NET_EVENT_H_
13 : #define ZEPHYR_INCLUDE_NET_NET_EVENT_H_
14 :
15 : #include <zephyr/net/net_ip.h>
16 : #include <zephyr/net/net_mgmt.h>
17 : #include <zephyr/net/hostname.h>
18 :
19 : #ifdef __cplusplus
20 : extern "C" {
21 : #endif
22 :
23 : /**
24 : * @addtogroup net_mgmt
25 : * @{
26 : */
27 :
28 : /** @cond INTERNAL_HIDDEN */
29 :
30 : /* Network Interface events */
31 : #define NET_IF_LAYER NET_MGMT_LAYER_L2
32 : #define NET_IF_CORE_CODE NET_MGMT_LAYER_CODE_IFACE
33 : #define NET_EVENT_IF_BASE (NET_MGMT_EVENT_BIT | \
34 : NET_MGMT_IFACE_BIT | \
35 : NET_MGMT_LAYER(NET_IF_LAYER) | \
36 : NET_MGMT_LAYER_CODE(NET_IF_CORE_CODE))
37 :
38 : enum {
39 : NET_EVENT_IF_CMD_DOWN_VAL,
40 : NET_EVENT_IF_CMD_UP_VAL,
41 : NET_EVENT_IF_CMD_ADMIN_DOWN_VAL,
42 : NET_EVENT_IF_CMD_ADMIN_UP_VAL,
43 :
44 : NET_EVENT_IF_CMD_MAX
45 : };
46 :
47 : BUILD_ASSERT(NET_EVENT_IF_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
48 : "Number of events in net_event_if_cmd exceeds the limit");
49 :
50 : enum net_event_if_cmd {
51 : NET_MGMT_CMD(NET_EVENT_IF_CMD_DOWN),
52 : NET_MGMT_CMD(NET_EVENT_IF_CMD_UP),
53 : NET_MGMT_CMD(NET_EVENT_IF_CMD_ADMIN_DOWN),
54 : NET_MGMT_CMD(NET_EVENT_IF_CMD_ADMIN_UP),
55 : };
56 :
57 : /* IPv6 Events */
58 : #define NET_IPV6_LAYER NET_MGMT_LAYER_L3
59 : #define NET_IPV6_CORE_CODE NET_MGMT_LAYER_CODE_IPV6
60 : #define NET_EVENT_IPV6_BASE (NET_MGMT_EVENT_BIT | \
61 : NET_MGMT_IFACE_BIT | \
62 : NET_MGMT_LAYER(NET_IPV6_LAYER) | \
63 : NET_MGMT_LAYER_CODE(NET_IPV6_CORE_CODE))
64 :
65 : enum {
66 : NET_EVENT_IPV6_CMD_ADDR_ADD_VAL,
67 : NET_EVENT_IPV6_CMD_ADDR_DEL_VAL,
68 : NET_EVENT_IPV6_CMD_MADDR_ADD_VAL,
69 : NET_EVENT_IPV6_CMD_MADDR_DEL_VAL,
70 : NET_EVENT_IPV6_CMD_PREFIX_ADD_VAL,
71 : NET_EVENT_IPV6_CMD_PREFIX_DEL_VAL,
72 : NET_EVENT_IPV6_CMD_MCAST_JOIN_VAL,
73 : NET_EVENT_IPV6_CMD_MCAST_LEAVE_VAL,
74 : NET_EVENT_IPV6_CMD_ROUTER_ADD_VAL,
75 : NET_EVENT_IPV6_CMD_ROUTER_DEL_VAL,
76 : NET_EVENT_IPV6_CMD_ROUTE_ADD_VAL,
77 : NET_EVENT_IPV6_CMD_ROUTE_DEL_VAL,
78 : NET_EVENT_IPV6_CMD_DAD_SUCCEED_VAL,
79 : NET_EVENT_IPV6_CMD_DAD_FAILED_VAL,
80 : NET_EVENT_IPV6_CMD_NBR_ADD_VAL,
81 : NET_EVENT_IPV6_CMD_NBR_DEL_VAL,
82 : NET_EVENT_IPV6_CMD_DHCP_START_VAL,
83 : NET_EVENT_IPV6_CMD_DHCP_BOUND_VAL,
84 : NET_EVENT_IPV6_CMD_DHCP_STOP_VAL,
85 : NET_EVENT_IPV6_CMD_ADDR_DEPRECATED_VAL,
86 : NET_EVENT_IPV6_CMD_PE_ENABLED_VAL,
87 : NET_EVENT_IPV6_CMD_PE_DISABLED_VAL,
88 : NET_EVENT_IPV6_CMD_PE_FILTER_ADD_VAL,
89 : NET_EVENT_IPV6_CMD_PE_FILTER_DEL_VAL,
90 : NET_EVENT_IPV6_CMD_PMTU_CHANGED_VAL,
91 :
92 : NET_EVENT_IPV6_CMD_MAX
93 : };
94 :
95 : BUILD_ASSERT(NET_EVENT_IPV6_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
96 : "Number of events in net_event_ipv6_cmd exceeds the limit");
97 :
98 : enum net_event_ipv6_cmd {
99 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ADDR_ADD),
100 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ADDR_DEL),
101 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_MADDR_ADD),
102 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_MADDR_DEL),
103 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PREFIX_ADD),
104 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PREFIX_DEL),
105 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_MCAST_JOIN),
106 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_MCAST_LEAVE),
107 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ROUTER_ADD),
108 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ROUTER_DEL),
109 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ROUTE_ADD),
110 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ROUTE_DEL),
111 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_DAD_SUCCEED),
112 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_DAD_FAILED),
113 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_NBR_ADD),
114 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_NBR_DEL),
115 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_DHCP_START),
116 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_DHCP_BOUND),
117 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_DHCP_STOP),
118 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_ADDR_DEPRECATED),
119 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PE_ENABLED),
120 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PE_DISABLED),
121 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PE_FILTER_ADD),
122 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PE_FILTER_DEL),
123 : NET_MGMT_CMD(NET_EVENT_IPV6_CMD_PMTU_CHANGED),
124 : };
125 :
126 : /* IPv4 Events*/
127 : #define NET_IPV4_LAYER NET_MGMT_LAYER_L3
128 : #define NET_IPV4_CORE_CODE NET_MGMT_LAYER_CODE_IPV4
129 : #define NET_EVENT_IPV4_BASE (NET_MGMT_EVENT_BIT | \
130 : NET_MGMT_IFACE_BIT | \
131 : NET_MGMT_LAYER(NET_IPV4_LAYER) | \
132 : NET_MGMT_LAYER_CODE(NET_IPV4_CORE_CODE))
133 :
134 : enum {
135 : NET_EVENT_IPV4_CMD_ADDR_ADD_VAL,
136 : NET_EVENT_IPV4_CMD_ADDR_DEL_VAL,
137 : NET_EVENT_IPV4_CMD_MADDR_ADD_VAL,
138 : NET_EVENT_IPV4_CMD_MADDR_DEL_VAL,
139 : NET_EVENT_IPV4_CMD_ROUTER_ADD_VAL,
140 : NET_EVENT_IPV4_CMD_ROUTER_DEL_VAL,
141 : NET_EVENT_IPV4_CMD_DHCP_START_VAL,
142 : NET_EVENT_IPV4_CMD_DHCP_BOUND_VAL,
143 : NET_EVENT_IPV4_CMD_DHCP_STOP_VAL,
144 : NET_EVENT_IPV4_CMD_MCAST_JOIN_VAL,
145 : NET_EVENT_IPV4_CMD_MCAST_LEAVE_VAL,
146 : NET_EVENT_IPV4_CMD_ACD_SUCCEED_VAL,
147 : NET_EVENT_IPV4_CMD_ACD_FAILED_VAL,
148 : NET_EVENT_IPV4_CMD_ACD_CONFLICT_VAL,
149 : NET_EVENT_IPV4_CMD_PMTU_CHANGED_VAL,
150 :
151 : NET_EVENT_IPV4_CMD_MAX
152 : };
153 :
154 : BUILD_ASSERT(NET_EVENT_IPV4_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
155 : "Number of events in net_event_ipv4_cmd exceeds the limit");
156 :
157 : enum net_event_ipv4_cmd {
158 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ADDR_ADD),
159 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ADDR_DEL),
160 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_MADDR_ADD),
161 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_MADDR_DEL),
162 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ROUTER_ADD),
163 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ROUTER_DEL),
164 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_DHCP_START),
165 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_DHCP_BOUND),
166 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_DHCP_STOP),
167 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_MCAST_JOIN),
168 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_MCAST_LEAVE),
169 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ACD_SUCCEED),
170 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ACD_FAILED),
171 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_ACD_CONFLICT),
172 : NET_MGMT_CMD(NET_EVENT_IPV4_CMD_PMTU_CHANGED),
173 : };
174 :
175 : /* L4 network events */
176 : #define NET_L4_LAYER NET_MGMT_LAYER_L4
177 : #define NET_L4_CORE_CODE NET_MGMT_LAYER_CODE_L4
178 : #define NET_EVENT_L4_BASE (NET_MGMT_EVENT_BIT | \
179 : NET_MGMT_IFACE_BIT | \
180 : NET_MGMT_LAYER(NET_L4_LAYER) | \
181 : NET_MGMT_LAYER_CODE(NET_L4_CORE_CODE))
182 :
183 : enum {
184 : NET_EVENT_L4_CMD_CONNECTED_VAL,
185 : NET_EVENT_L4_CMD_DISCONNECTED_VAL,
186 : NET_EVENT_L4_CMD_IPV4_CONNECTED_VAL,
187 : NET_EVENT_L4_CMD_IPV4_DISCONNECTED_VAL,
188 : NET_EVENT_L4_CMD_IPV6_CONNECTED_VAL,
189 : NET_EVENT_L4_CMD_IPV6_DISCONNECTED_VAL,
190 : NET_EVENT_L4_CMD_DNS_SERVER_ADD_VAL,
191 : NET_EVENT_L4_CMD_DNS_SERVER_DEL_VAL,
192 : NET_EVENT_L4_CMD_HOSTNAME_CHANGED_VAL,
193 : NET_EVENT_L4_CMD_CAPTURE_STARTED_VAL,
194 : NET_EVENT_L4_CMD_CAPTURE_STOPPED_VAL,
195 : NET_EVENT_L4_CMD_VPN_CONNECTED_VAL,
196 : NET_EVENT_L4_CMD_VPN_DISCONNECTED_VAL,
197 : NET_EVENT_L4_CMD_VPN_PEER_ADD_VAL,
198 : NET_EVENT_L4_CMD_VPN_PEER_DEL_VAL,
199 :
200 : NET_EVENT_L4_CMD_MAX
201 : };
202 :
203 : BUILD_ASSERT(NET_EVENT_L4_CMD_MAX <= NET_MGMT_MAX_COMMANDS,
204 : "Number of events in net_event_l4_cmd exceeds the limit");
205 :
206 : enum net_event_l4_cmd {
207 : NET_MGMT_CMD(NET_EVENT_L4_CMD_CONNECTED),
208 : NET_MGMT_CMD(NET_EVENT_L4_CMD_DISCONNECTED),
209 : NET_MGMT_CMD(NET_EVENT_L4_CMD_IPV4_CONNECTED),
210 : NET_MGMT_CMD(NET_EVENT_L4_CMD_IPV4_DISCONNECTED),
211 : NET_MGMT_CMD(NET_EVENT_L4_CMD_IPV6_CONNECTED),
212 : NET_MGMT_CMD(NET_EVENT_L4_CMD_IPV6_DISCONNECTED),
213 : NET_MGMT_CMD(NET_EVENT_L4_CMD_DNS_SERVER_ADD),
214 : NET_MGMT_CMD(NET_EVENT_L4_CMD_DNS_SERVER_DEL),
215 : NET_MGMT_CMD(NET_EVENT_L4_CMD_HOSTNAME_CHANGED),
216 : NET_MGMT_CMD(NET_EVENT_L4_CMD_CAPTURE_STARTED),
217 : NET_MGMT_CMD(NET_EVENT_L4_CMD_CAPTURE_STOPPED),
218 : NET_MGMT_CMD(NET_EVENT_L4_CMD_VPN_CONNECTED),
219 : NET_MGMT_CMD(NET_EVENT_L4_CMD_VPN_DISCONNECTED),
220 : NET_MGMT_CMD(NET_EVENT_L4_CMD_VPN_PEER_ADD),
221 : NET_MGMT_CMD(NET_EVENT_L4_CMD_VPN_PEER_DEL),
222 : };
223 :
224 : /** @endcond */
225 :
226 : /** Event emitted when the network interface goes down. */
227 1 : #define NET_EVENT_IF_DOWN \
228 : (NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_DOWN)
229 :
230 : /** Event emitted when the network interface goes up. */
231 1 : #define NET_EVENT_IF_UP \
232 : (NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_UP)
233 :
234 : /** Event emitted when the network interface is taken down manually. */
235 1 : #define NET_EVENT_IF_ADMIN_DOWN \
236 : (NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_ADMIN_DOWN)
237 :
238 : /** Event emitted when the network interface goes up manually. */
239 1 : #define NET_EVENT_IF_ADMIN_UP \
240 : (NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_ADMIN_UP)
241 :
242 : /** Event emitted when an IPv6 address is added to the system. */
243 1 : #define NET_EVENT_IPV6_ADDR_ADD \
244 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_ADD)
245 :
246 : /** Event emitted when an IPv6 address is removed from the system. */
247 1 : #define NET_EVENT_IPV6_ADDR_DEL \
248 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_DEL)
249 :
250 : /** Event emitted when an IPv6 multicast address is added to the system. */
251 1 : #define NET_EVENT_IPV6_MADDR_ADD \
252 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_ADD)
253 :
254 : /** Event emitted when an IPv6 multicast address is removed from the system. */
255 1 : #define NET_EVENT_IPV6_MADDR_DEL \
256 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_DEL)
257 :
258 : /** Event emitted when an IPv6 prefix is added to the system. */
259 1 : #define NET_EVENT_IPV6_PREFIX_ADD \
260 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_ADD)
261 :
262 : /** Event emitted when an IPv6 prefix is removed from the system. */
263 1 : #define NET_EVENT_IPV6_PREFIX_DEL \
264 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_DEL)
265 :
266 : /** Event emitted when an IPv6 multicast group is joined. */
267 1 : #define NET_EVENT_IPV6_MCAST_JOIN \
268 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_JOIN)
269 :
270 : /** Event emitted when an IPv6 multicast group is left. */
271 1 : #define NET_EVENT_IPV6_MCAST_LEAVE \
272 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_LEAVE)
273 :
274 : /** Event emitted when an IPv6 router is added to the system. */
275 1 : #define NET_EVENT_IPV6_ROUTER_ADD \
276 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_ADD)
277 :
278 : /** Event emitted when an IPv6 router is removed from the system. */
279 1 : #define NET_EVENT_IPV6_ROUTER_DEL \
280 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_DEL)
281 :
282 : /** Event emitted when an IPv6 route is added to the system. */
283 1 : #define NET_EVENT_IPV6_ROUTE_ADD \
284 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_ADD)
285 :
286 : /** Event emitted when an IPv6 route is removed from the system. */
287 1 : #define NET_EVENT_IPV6_ROUTE_DEL \
288 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_DEL)
289 :
290 : /** Event emitted when an IPv6 duplicate address detection succeeds. */
291 1 : #define NET_EVENT_IPV6_DAD_SUCCEED \
292 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_SUCCEED)
293 :
294 : /** Event emitted when an IPv6 duplicate address detection fails. */
295 1 : #define NET_EVENT_IPV6_DAD_FAILED \
296 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_FAILED)
297 :
298 : /** Event emitted when an IPv6 neighbor is added to the system. */
299 1 : #define NET_EVENT_IPV6_NBR_ADD \
300 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_ADD)
301 :
302 : /** Event emitted when an IPv6 neighbor is removed from the system. */
303 1 : #define NET_EVENT_IPV6_NBR_DEL \
304 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_DEL)
305 :
306 : /** Event emitted when an IPv6 DHCP client starts. */
307 1 : #define NET_EVENT_IPV6_DHCP_START \
308 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DHCP_START)
309 :
310 : /** Event emitted when an IPv6 DHCP client address is bound. */
311 1 : #define NET_EVENT_IPV6_DHCP_BOUND \
312 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DHCP_BOUND)
313 :
314 : /** Event emitted when an IPv6 DHCP client is stopped. */
315 1 : #define NET_EVENT_IPV6_DHCP_STOP \
316 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DHCP_STOP)
317 :
318 : /** IPv6 address is deprecated. */
319 1 : #define NET_EVENT_IPV6_ADDR_DEPRECATED \
320 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_DEPRECATED)
321 :
322 : /** IPv6 Privacy extension is enabled. */
323 1 : #define NET_EVENT_IPV6_PE_ENABLED \
324 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PE_ENABLED)
325 :
326 : /** IPv6 Privacy extension is disabled. */
327 1 : #define NET_EVENT_IPV6_PE_DISABLED \
328 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PE_DISABLED)
329 :
330 : /** IPv6 Privacy extension filter is added. */
331 1 : #define NET_EVENT_IPV6_PE_FILTER_ADD \
332 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PE_FILTER_ADD)
333 :
334 : /** IPv6 Privacy extension filter is removed. */
335 1 : #define NET_EVENT_IPV6_PE_FILTER_DEL \
336 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PE_FILTER_DEL)
337 :
338 : /** IPv6 Path MTU is changed. */
339 1 : #define NET_EVENT_IPV6_PMTU_CHANGED \
340 : (NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PMTU_CHANGED)
341 :
342 : /** Event emitted when an IPv4 address is added to the system. */
343 1 : #define NET_EVENT_IPV4_ADDR_ADD \
344 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_ADD)
345 :
346 : /** Event emitted when an IPv4 address is removed from the system. */
347 1 : #define NET_EVENT_IPV4_ADDR_DEL \
348 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_DEL)
349 :
350 : /** Event emitted when an IPv4 multicast address is added to the system. */
351 1 : #define NET_EVENT_IPV4_MADDR_ADD \
352 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MADDR_ADD)
353 :
354 : /** Event emitted when an IPv4 multicast address is removed from the system. */
355 1 : #define NET_EVENT_IPV4_MADDR_DEL \
356 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MADDR_DEL)
357 :
358 : /** Event emitted when an IPv4 router is added to the system. */
359 1 : #define NET_EVENT_IPV4_ROUTER_ADD \
360 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_ADD)
361 :
362 : /** Event emitted when an IPv4 router is removed from the system. */
363 1 : #define NET_EVENT_IPV4_ROUTER_DEL \
364 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_DEL)
365 :
366 : /** Event emitted when an IPv4 DHCP client is started. */
367 1 : #define NET_EVENT_IPV4_DHCP_START \
368 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_START)
369 :
370 : /** Event emitted when an IPv4 DHCP client address is bound. */
371 1 : #define NET_EVENT_IPV4_DHCP_BOUND \
372 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_BOUND)
373 :
374 : /** Event emitted when an IPv4 DHCP client is stopped. */
375 1 : #define NET_EVENT_IPV4_DHCP_STOP \
376 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_STOP)
377 :
378 : /** Event emitted when an IPv4 multicast group is joined. */
379 1 : #define NET_EVENT_IPV4_MCAST_JOIN \
380 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MCAST_JOIN)
381 :
382 : /** Event emitted when an IPv4 multicast group is left. */
383 1 : #define NET_EVENT_IPV4_MCAST_LEAVE \
384 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MCAST_LEAVE)
385 :
386 : /** Event emitted when an IPv4 address conflict detection succeeds. */
387 1 : #define NET_EVENT_IPV4_ACD_SUCCEED \
388 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ACD_SUCCEED)
389 :
390 : /** Event emitted when an IPv4 address conflict detection fails. */
391 1 : #define NET_EVENT_IPV4_ACD_FAILED \
392 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ACD_FAILED)
393 :
394 : /** Event emitted when an IPv4 address conflict was detected after the address
395 : * was confirmed as safe to use. It's up to the application to determine on
396 : * how to act in such case.
397 : */
398 1 : #define NET_EVENT_IPV4_ACD_CONFLICT \
399 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ACD_CONFLICT)
400 :
401 : /** IPv4 Path MTU is changed. */
402 1 : #define NET_EVENT_IPV4_PMTU_CHANGED \
403 : (NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_PMTU_CHANGED)
404 :
405 : /** Event emitted when the system is considered to be connected.
406 : * The connected in this context means that the network interface is up,
407 : * and the interface has either IPv4 or IPv6 address assigned to it.
408 : */
409 1 : #define NET_EVENT_L4_CONNECTED \
410 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_CONNECTED)
411 :
412 : /** Event emitted when the system is no longer connected.
413 : * Typically this means that network connectivity is lost either by
414 : * the network interface is going down, or the interface has no longer
415 : * an IP address etc.
416 : */
417 1 : #define NET_EVENT_L4_DISCONNECTED \
418 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DISCONNECTED)
419 :
420 :
421 : /** Event raised when IPv4 network connectivity is available. */
422 1 : #define NET_EVENT_L4_IPV4_CONNECTED \
423 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_IPV4_CONNECTED)
424 :
425 : /** Event emitted when IPv4 network connectivity is lost. */
426 1 : #define NET_EVENT_L4_IPV4_DISCONNECTED \
427 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_IPV4_DISCONNECTED)
428 :
429 : /** Event emitted when IPv6 network connectivity is available. */
430 1 : #define NET_EVENT_L4_IPV6_CONNECTED \
431 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_IPV6_CONNECTED)
432 :
433 : /** Event emitted when IPv6 network connectivity is lost. */
434 1 : #define NET_EVENT_L4_IPV6_DISCONNECTED \
435 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_IPV6_DISCONNECTED)
436 :
437 : /** Event emitted when a DNS server is added to the system. */
438 1 : #define NET_EVENT_DNS_SERVER_ADD \
439 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_ADD)
440 :
441 : /** Event emitted when a DNS server is removed from the system. */
442 1 : #define NET_EVENT_DNS_SERVER_DEL \
443 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_DEL)
444 :
445 : /** Event emitted when the system hostname is changed. */
446 1 : #define NET_EVENT_HOSTNAME_CHANGED \
447 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_HOSTNAME_CHANGED)
448 :
449 : /** Network packet capture is started. */
450 1 : #define NET_EVENT_CAPTURE_STARTED \
451 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_CAPTURE_STARTED)
452 :
453 : /** Network packet capture is stopped. */
454 1 : #define NET_EVENT_CAPTURE_STOPPED \
455 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_CAPTURE_STOPPED)
456 :
457 : /** Event emitted when VPN network connectivity is available. */
458 1 : #define NET_EVENT_VPN_CONNECTED \
459 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_VPN_CONNECTED)
460 :
461 : /** Event emitted when VPN network connectivity is lost. */
462 1 : #define NET_EVENT_VPN_DISCONNECTED \
463 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_VPN_DISCONNECTED)
464 :
465 : /** Event emitted when a VPN peer is added to the system. */
466 1 : #define NET_EVENT_VPN_PEER_ADD \
467 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_VPN_PEER_ADD)
468 :
469 : /** Event emitted when a VPN peer is removed from the system. */
470 1 : #define NET_EVENT_VPN_PEER_DEL \
471 : (NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_VPN_PEER_DEL)
472 :
473 : /**
474 : * @brief Network Management event information structure
475 : * Used to pass information on network events like
476 : * NET_EVENT_IPV6_ADDR_ADD,
477 : * NET_EVENT_IPV6_ADDR_DEL,
478 : * NET_EVENT_IPV6_MADDR_ADD and
479 : * NET_EVENT_IPV6_MADDR_DEL
480 : * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
481 : * information.
482 : */
483 1 : struct net_event_ipv6_addr {
484 : /** IPv6 address related to this event */
485 1 : struct in6_addr addr;
486 : };
487 :
488 : /**
489 : * @brief Network Management event information structure
490 : * Used to pass information on network events like
491 : * NET_EVENT_IPV6_NBR_ADD and
492 : * NET_EVENT_IPV6_NBR_DEL
493 : * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
494 : * information.
495 : * @note: idx will be '-1' in case of NET_EVENT_IPV6_NBR_DEL event.
496 : */
497 1 : struct net_event_ipv6_nbr {
498 : /** Neighbor IPv6 address */
499 1 : struct in6_addr addr;
500 : /** Neighbor index in cache */
501 1 : int idx;
502 : };
503 :
504 : /**
505 : * @brief Network Management event information structure
506 : * Used to pass information on network events like
507 : * NET_EVENT_IPV6_ROUTE_ADD and
508 : * NET_EVENT_IPV6_ROUTE_DEL
509 : * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
510 : * information.
511 : */
512 1 : struct net_event_ipv6_route {
513 : /** IPv6 address of the next hop */
514 1 : struct in6_addr nexthop;
515 : /** IPv6 address or prefix of the route */
516 1 : struct in6_addr addr;
517 : /** IPv6 prefix length */
518 1 : uint8_t prefix_len;
519 : };
520 :
521 : /**
522 : * @brief Network Management event information structure
523 : * Used to pass information on network events like
524 : * NET_EVENT_IPV6_PREFIX_ADD and
525 : * NET_EVENT_IPV6_PREFIX_DEL
526 : * when CONFIG_NET_MGMT_EVENT_INFO is enabled and event generator pass the
527 : * information.
528 : */
529 1 : struct net_event_ipv6_prefix {
530 : /** IPv6 prefix */
531 1 : struct in6_addr addr;
532 : /** IPv6 prefix length */
533 1 : uint8_t len;
534 : /** IPv6 prefix lifetime in seconds */
535 1 : uint32_t lifetime;
536 : };
537 :
538 : /**
539 : * @brief Network Management event information structure
540 : * Used to pass information on NET_EVENT_HOSTNAME_CHANGED event when
541 : * CONFIG_NET_MGMT_EVENT_INFO is enabled and event generator pass the
542 : * information.
543 : */
544 1 : struct net_event_l4_hostname {
545 : /** New hostname */
546 1 : char hostname[NET_HOSTNAME_SIZE];
547 : };
548 :
549 : /**
550 : * @brief Network Management event information structure
551 : * Used to pass information on network events like
552 : * NET_EVENT_IPV6_PE_FILTER_ADD and
553 : * NET_EVENT_IPV6_PE_FILTER_DEL
554 : * when CONFIG_NET_MGMT_EVENT_INFO is enabled and event generator pass the
555 : * information.
556 : *
557 : * This is only available if CONFIG_NET_IPV6_PE_FILTER_PREFIX_COUNT is >0.
558 : */
559 1 : struct net_event_ipv6_pe_filter {
560 : /** IPv6 address of privacy extension filter */
561 1 : struct in6_addr prefix;
562 : /** IPv6 filter deny or allow list */
563 1 : bool is_deny_list;
564 : };
565 :
566 : /**
567 : * @brief Network Management event information structure
568 : * Used to pass information on network event
569 : * NET_EVENT_IPV4_PMTU_CHANGED
570 : * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
571 : * information.
572 : */
573 1 : struct net_event_ipv4_pmtu_info {
574 : /** IPv4 address */
575 1 : struct in_addr dst;
576 : /** New MTU */
577 1 : uint16_t mtu;
578 : };
579 :
580 : /**
581 : * @brief Network Management event information structure
582 : * Used to pass information on network event
583 : * NET_EVENT_IPV6_PMTU_CHANGED
584 : * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the
585 : * information.
586 : */
587 1 : struct net_event_ipv6_pmtu_info {
588 : /** IPv6 address */
589 1 : struct in6_addr dst;
590 : /** New MTU */
591 1 : uint32_t mtu;
592 : };
593 :
594 : #ifdef __cplusplus
595 : }
596 : #endif
597 :
598 : /**
599 : * @}
600 : */
601 :
602 : #endif /* ZEPHYR_INCLUDE_NET_NET_EVENT_H_ */
|