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_ */