Zephyr API Documentation  3.7.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
31#define _NET_VIRTUAL_INTERFACE_LAYER NET_MGMT_LAYER_L2
32#define _NET_VIRTUAL_INTERFACE_CODE 0x209
33#define _NET_VIRTUAL_INTERFACE_BASE \
34 (NET_MGMT_IFACE_BIT | \
35 NET_MGMT_LAYER(_NET_VIRTUAL_INTERFACE_LAYER) | \
36 NET_MGMT_LAYER_CODE(_NET_VIRTUAL_INTERFACE_CODE))
37#define _NET_VIRTUAL_INTERFACE_EVENT \
38 (_NET_VIRTUAL_INTERFACE_BASE | NET_MGMT_EVENT_BIT)
39
40struct virtual_interface_req_params {
41 sa_family_t family;
42 union {
43 struct in_addr peer4addr;
44 struct in6_addr peer6addr;
45 int mtu;
46 struct virtual_interface_link_types link_types;
47 };
48};
49
50enum net_request_virtual_interface_cmd {
51 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR = 1,
52 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR,
53 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU,
54 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU,
55 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE,
56 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE,
57};
58
59#define NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS \
60 (_NET_VIRTUAL_INTERFACE_BASE | \
61 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_PEER_ADDR)
62
63NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_PEER_ADDRESS);
64
65#define NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU \
66 (_NET_VIRTUAL_INTERFACE_BASE | \
67 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_MTU)
68
69NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_MTU);
70
71#define NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE \
72 (_NET_VIRTUAL_INTERFACE_BASE | \
73 NET_REQUEST_VIRTUAL_INTERFACE_CMD_SET_LINK_TYPE)
74
75NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_SET_LINK_TYPE);
76
77#define NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS \
78 (_NET_VIRTUAL_INTERFACE_BASE | \
79 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_PEER_ADDR)
80
81NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_PEER_ADDRESS);
82
83#define NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU \
84 (_NET_VIRTUAL_INTERFACE_BASE | \
85 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_MTU)
86
87NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_MTU);
88
89#define NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE \
90 (_NET_VIRTUAL_INTERFACE_BASE | \
91 NET_REQUEST_VIRTUAL_INTERFACE_CMD_GET_LINK_TYPE)
92
93NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_VIRTUAL_INTERFACE_GET_LINK_TYPE);
94
95struct net_if;
96
103#ifdef __cplusplus
104}
105#endif
106
107#endif /* ZEPHYR_INCLUDE_NET_VIRTUAL_MGMT_H_ */
unsigned short int sa_family_t
Socket address family type.
Definition: net_ip.h:164
#define NET_MGMT_DEFINE_REQUEST_HANDLER(_mgmt_request)
Declare a request handler function for the given network event.
Definition: net_mgmt.h:109
Network Management API public header.
IPv6 address struct.
Definition: net_ip.h:139
IPv4 address struct.
Definition: net_ip.h:151
Network Interface structure.
Definition: net_if.h:678
Virtual Network Interface.