Zephyr API Documentation 4.0.0
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 };
50};
51
52enum 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
65NET_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
71NET_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
77NET_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
83NET_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
89NET_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
95NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE);
96
97struct net_if;
98
105#ifdef __cplusplus
106}
107#endif
108
109#endif /* ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_ */
unsigned short int sa_family_t
Socket address family type.
Definition net_ip.h:167
#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.
IPv6 address struct.
Definition net_ip.h:142
IPv4 address struct.
Definition net_ip.h:154
Network Interface structure.
Definition net_if.h:680
Virtual Network Interface.