Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
virtual_mgmt.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2021 Intel Corporation.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
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
19extern "C" {
20#endif
21
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
42struct 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
60enum 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
75NET_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
81NET_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
87NET_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
93NET_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
99NET_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
105NET_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
111NET_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
117NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_PUBLIC_KEY);
118
119struct net_if;
120
127#ifdef __cplusplus
128}
129#endif
130
131#endif /* ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_ */
unsigned short int sa_family_t
Socket address family type.
Definition net_ip.h:168
#define NET_MGMT_DEFINE_REQUEST_HANDLER(_mgmt_request)
Declare a request handler function for the given network event.
Definition net_mgmt.h:111
Network Management API public header.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
IPv6 address struct.
Definition net_ip.h:143
IPv4 address struct.
Definition net_ip.h:155
Network Interface structure.
Definition net_if.h:714
Virtual Network Interface.