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 NET_MGMT_LAYER_CODE_VIRTUAL
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 : struct {
50 : size_t len;
51 : uint8_t *data;
52 : } private_key;
53 : struct {
54 : size_t len;
55 : uint8_t data[NET_VIRTUAL_MAX_PUBLIC_KEY_LEN];
56 : } public_key;
57 : };
58 : };
59 :
60 : enum net_request_virtual_interface_cmd {
61 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR = 1,
62 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR,
63 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU,
64 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU,
65 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE,
66 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE,
67 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PRIVATE_KEY,
68 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PUBLIC_KEY,
69 : };
70 :
71 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS \
72 : (NET_VIRTUAL_INTERFACE_BASE | \
73 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR)
74 :
75 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS);
76 :
77 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU \
78 : (NET_VIRTUAL_INTERFACE_BASE | \
79 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU)
80 :
81 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU);
82 :
83 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE \
84 : (NET_VIRTUAL_INTERFACE_BASE | \
85 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE)
86 :
87 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE);
88 :
89 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS \
90 : (NET_VIRTUAL_INTERFACE_BASE | \
91 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR)
92 :
93 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS);
94 :
95 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU \
96 : (NET_VIRTUAL_INTERFACE_BASE | \
97 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU)
98 :
99 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU);
100 :
101 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE \
102 : (NET_VIRTUAL_INTERFACE_BASE | \
103 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE)
104 :
105 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE);
106 :
107 : #define NET_REQUEST_VIRTUAL_INTERFACE_SET_PRIVATE_KEY \
108 : (NET_VIRTUAL_INTERFACE_BASE | \
109 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PRIVATE_KEY)
110 :
111 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_PRIVATE_KEY);
112 :
113 : #define NET_REQUEST_VIRTUAL_INTERFACE_GET_PUBLIC_KEY \
114 : (NET_VIRTUAL_INTERFACE_BASE | \
115 : NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PUBLIC_KEY)
116 :
117 : NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_PUBLIC_KEY);
118 :
119 : struct net_if;
120 :
121 : /** @endcond */
122 :
123 : /**
124 : * @}
125 : */
126 :
127 : #ifdef __cplusplus
128 : }
129 : #endif
130 :
131 : #endif /* ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_ */
|