Zephyr Project API  3.2.0
A Scalable Open Source RTOS
net_event.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
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
17#ifdef __cplusplus
18extern "C" {
19#endif
20
28/* Network Interface events */
29#define _NET_IF_LAYER NET_MGMT_LAYER_L2
30#define _NET_IF_CORE_CODE 0x001
31#define _NET_EVENT_IF_BASE (NET_MGMT_EVENT_BIT | \
32 NET_MGMT_IFACE_BIT | \
33 NET_MGMT_LAYER(_NET_IF_LAYER) | \
34 NET_MGMT_LAYER_CODE(_NET_IF_CORE_CODE))
35
36enum net_event_if_cmd {
37 NET_EVENT_IF_CMD_DOWN = 1,
38 NET_EVENT_IF_CMD_UP,
39};
40
41#define NET_EVENT_IF_DOWN \
42 (_NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_DOWN)
43
44#define NET_EVENT_IF_UP \
45 (_NET_EVENT_IF_BASE | NET_EVENT_IF_CMD_UP)
46
47/* IPv6 Events */
48#define _NET_IPV6_LAYER NET_MGMT_LAYER_L3
49#define _NET_IPV6_CORE_CODE 0x060
50#define _NET_EVENT_IPV6_BASE (NET_MGMT_EVENT_BIT | \
51 NET_MGMT_IFACE_BIT | \
52 NET_MGMT_LAYER(_NET_IPV6_LAYER) | \
53 NET_MGMT_LAYER_CODE(_NET_IPV6_CORE_CODE))
54
55enum net_event_ipv6_cmd {
56 NET_EVENT_IPV6_CMD_ADDR_ADD = 1,
57 NET_EVENT_IPV6_CMD_ADDR_DEL,
58 NET_EVENT_IPV6_CMD_MADDR_ADD,
59 NET_EVENT_IPV6_CMD_MADDR_DEL,
60 NET_EVENT_IPV6_CMD_PREFIX_ADD,
61 NET_EVENT_IPV6_CMD_PREFIX_DEL,
62 NET_EVENT_IPV6_CMD_MCAST_JOIN,
63 NET_EVENT_IPV6_CMD_MCAST_LEAVE,
64 NET_EVENT_IPV6_CMD_ROUTER_ADD,
65 NET_EVENT_IPV6_CMD_ROUTER_DEL,
66 NET_EVENT_IPV6_CMD_ROUTE_ADD,
67 NET_EVENT_IPV6_CMD_ROUTE_DEL,
68 NET_EVENT_IPV6_CMD_DAD_SUCCEED,
69 NET_EVENT_IPV6_CMD_DAD_FAILED,
70 NET_EVENT_IPV6_CMD_NBR_ADD,
71 NET_EVENT_IPV6_CMD_NBR_DEL,
72};
73
74#define NET_EVENT_IPV6_ADDR_ADD \
75 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_ADD)
76
77#define NET_EVENT_IPV6_ADDR_DEL \
78 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ADDR_DEL)
79
80#define NET_EVENT_IPV6_MADDR_ADD \
81 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_ADD)
82
83#define NET_EVENT_IPV6_MADDR_DEL \
84 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MADDR_DEL)
85
86#define NET_EVENT_IPV6_PREFIX_ADD \
87 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_ADD)
88
89#define NET_EVENT_IPV6_PREFIX_DEL \
90 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PREFIX_DEL)
91
92#define NET_EVENT_IPV6_MCAST_JOIN \
93 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_JOIN)
94
95#define NET_EVENT_IPV6_MCAST_LEAVE \
96 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_MCAST_LEAVE)
97
98#define NET_EVENT_IPV6_ROUTER_ADD \
99 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_ADD)
100
101#define NET_EVENT_IPV6_ROUTER_DEL \
102 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTER_DEL)
103
104#define NET_EVENT_IPV6_ROUTE_ADD \
105 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_ADD)
106
107#define NET_EVENT_IPV6_ROUTE_DEL \
108 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_ROUTE_DEL)
109
110#define NET_EVENT_IPV6_DAD_SUCCEED \
111 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_SUCCEED)
112
113#define NET_EVENT_IPV6_DAD_FAILED \
114 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_DAD_FAILED)
115
116#define NET_EVENT_IPV6_NBR_ADD \
117 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_ADD)
118
119#define NET_EVENT_IPV6_NBR_DEL \
120 (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_NBR_DEL)
121
122/* IPv4 Events*/
123#define _NET_IPV4_LAYER NET_MGMT_LAYER_L3
124#define _NET_IPV4_CORE_CODE 0x004
125#define _NET_EVENT_IPV4_BASE (NET_MGMT_EVENT_BIT | \
126 NET_MGMT_IFACE_BIT | \
127 NET_MGMT_LAYER(_NET_IPV4_LAYER) | \
128 NET_MGMT_LAYER_CODE(_NET_IPV4_CORE_CODE))
129
130enum net_event_ipv4_cmd {
131 NET_EVENT_IPV4_CMD_ADDR_ADD = 1,
132 NET_EVENT_IPV4_CMD_ADDR_DEL,
133 NET_EVENT_IPV4_CMD_MADDR_ADD,
134 NET_EVENT_IPV4_CMD_MADDR_DEL,
135 NET_EVENT_IPV4_CMD_ROUTER_ADD,
136 NET_EVENT_IPV4_CMD_ROUTER_DEL,
137 NET_EVENT_IPV4_CMD_DHCP_START,
138 NET_EVENT_IPV4_CMD_DHCP_BOUND,
139 NET_EVENT_IPV4_CMD_DHCP_STOP,
140 NET_EVENT_IPV4_CMD_MCAST_JOIN,
141 NET_EVENT_IPV4_CMD_MCAST_LEAVE,
142};
143
144#define NET_EVENT_IPV4_ADDR_ADD \
145 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_ADD)
146
147#define NET_EVENT_IPV4_ADDR_DEL \
148 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_DEL)
149
150#define NET_EVENT_IPV4_MADDR_ADD \
151 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MADDR_ADD)
152
153#define NET_EVENT_IPV4_MADDR_DEL \
154 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MADDR_DEL)
155
156#define NET_EVENT_IPV4_ROUTER_ADD \
157 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_ADD)
158
159#define NET_EVENT_IPV4_ROUTER_DEL \
160 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ROUTER_DEL)
161
162#define NET_EVENT_IPV4_DHCP_START \
163 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_START)
164
165#define NET_EVENT_IPV4_DHCP_BOUND \
166 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_BOUND)
167
168#define NET_EVENT_IPV4_DHCP_STOP \
169 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_DHCP_STOP)
170
171#define NET_EVENT_IPV4_MCAST_JOIN \
172 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MCAST_JOIN)
173
174#define NET_EVENT_IPV4_MCAST_LEAVE \
175 (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_MCAST_LEAVE)
176
177
178/* L4 network events */
179#define _NET_L4_LAYER NET_MGMT_LAYER_L4
180#define _NET_L4_CORE_CODE 0x114
181#define _NET_EVENT_L4_BASE (NET_MGMT_EVENT_BIT | \
182 NET_MGMT_IFACE_BIT | \
183 NET_MGMT_LAYER(_NET_L4_LAYER) | \
184 NET_MGMT_LAYER_CODE(_NET_L4_CORE_CODE))
185
186enum net_event_l4_cmd {
187 NET_EVENT_L4_CMD_CONNECTED = 1,
188 NET_EVENT_L4_CMD_DISCONNECTED,
189 NET_EVENT_L4_CMD_DNS_SERVER_ADD,
190 NET_EVENT_L4_CMD_DNS_SERVER_DEL,
191};
192
193#define NET_EVENT_L4_CONNECTED \
194 (_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_CONNECTED)
195
196#define NET_EVENT_L4_DISCONNECTED \
197 (_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DISCONNECTED)
198
199#define NET_EVENT_DNS_SERVER_ADD \
200 (_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_ADD)
201
202#define NET_EVENT_DNS_SERVER_DEL \
203 (_NET_EVENT_L4_BASE | NET_EVENT_L4_CMD_DNS_SERVER_DEL)
204
207#ifdef CONFIG_NET_MGMT_EVENT_INFO
218struct net_event_ipv6_addr {
219 struct in6_addr addr;
220};
221
231struct net_event_ipv6_nbr {
232 struct in6_addr addr;
233 int idx; /* NBR index*/
234};
235
244struct net_event_ipv6_route {
245 struct in6_addr nexthop;
246 struct in6_addr addr; /* addr/prefix */
247 uint8_t prefix_len;
248};
249
250#endif /* CONFIG_NET_MGMT_EVENT_INFO */
251
252#ifdef __cplusplus
253}
254#endif
255
260#endif /* ZEPHYR_INCLUDE_NET_NET_EVENT_H_ */
IPv6 and IPv4 definitions.
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Definition: net_ip.h:139