Line data Source code
1 1 : /*
2 : * Copyright (c) 2021 Intel Corporation.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Virtual Interface Management interface public header
10 : */
11 :
12 : #ifndef ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_
13 : #define ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_
14 :
15 : #include <zephyr/net/virtual.h>
16 : #include <zephyr/net/net_mgmt.h>
17 :
18 : #ifdef __cplusplus
19 : extern "C" {
20 : #endif
21 :
22 : /**
23 : * @brief Virtual interface library
24 : * @defgroup virtual_mgmt Virtual Interface Library
25 : * @since 2.6
26 : * @version 0.8.0
27 : * @ingroup networking
28 : * @{
29 : */
30 :
31 : /** @cond INTERNAL_HIDDEN */
32 :
33 : #define _NET_VIRTUAL_INTERFACE_LAYER NET_MGMT_LAYER_L2
34 : #define _NET_VIRTUAL_INTERFACE_CODE 0x209
35 : #define _NET_VIRTUAL_INTERFACE_BASE \
36 : (NET_MGMT_IFACE_BIT | \
37 : NET_MGMT_LAYER(_NET_VIRTUAL_INTERFACE_LAYER) | \
38 : NET_MGMT_LAYER_CODE(_NET_VIRTUAL_INTERFACE_CODE))
39 : #define _NET_VIRTUAL_INTERFACE_EVENT \
40 : (_NET_VIRTUAL_INTERFACE_BASE | NET_MGMT_EVENT_BIT)
41 :
42 : struct virtual_interface_req_params {
43 : sa_family_t family;
44 : union {
45 : struct in_addr peer4addr;
46 : struct in6_addr peer6addr;
47 : int mtu;
48 : struct virtual_interface_link_types link_types;
49 : };
50 : };
51 :
52 : enum net_request_virtual_interface_cmd {
53 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR = 1,
54 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR,
55 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU,
56 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU,
57 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE,
58 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE,
59 : };
60 :
61 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS \
62 : (_NET_VIRTUAL_INTERFACE_BASE | \
63 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR)
64 :
65 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS);
66 :
67 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU \
68 : (_NET_VIRTUAL_INTERFACE_BASE | \
69 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU)
70 :
71 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU);
72 :
73 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE \
74 : (_NET_VIRTUAL_INTERFACE_BASE | \
75 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE)
76 :
77 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE);
78 :
79 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS \
80 : (_NET_VIRTUAL_INTERFACE_BASE | \
81 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR)
82 :
83 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS);
84 :
85 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU \
86 : (_NET_VIRTUAL_INTERFACE_BASE | \
87 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU)
88 :
89 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU);
90 :
91 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE \
92 : (_NET_VIRTUAL_INTERFACE_BASE | \
93 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE)
94 :
95 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE);
96 :
97 : struct net_if;
98 :
99 : /** @endcond */
100 :
101 : /**
102 : * @}
103 : */
104 :
105 : #ifdef __cplusplus
106 : }
107 : #endif
108 :
109 : #endif /* ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_ */
|