1 /* 2 * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef _ESP_NETIF_DEFAULTS_H 8 #define _ESP_NETIF_DEFAULTS_H 9 10 #include "esp_compiler.h" 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 // 17 // Macros to assemble master configs with partial configs from netif, stack and driver 18 // 19 20 // If GARP enabled in menuconfig (default), make it also a default config for common netifs 21 #ifdef CONFIG_LWIP_ESP_GRATUITOUS_ARP 22 #define ESP_NETIF_DEFAULT_ARP_FLAGS (ESP_NETIF_FLAG_GARP) 23 #else 24 #define ESP_NETIF_DEFAULT_ARP_FLAGS (0) 25 #endif 26 27 #ifdef CONFIG_LWIP_IPV4 28 #define ESP_NETIF_IPV4_ONLY_FLAGS(flags) (flags) 29 #else 30 #define ESP_NETIF_IPV4_ONLY_FLAGS(flags) (0) 31 #endif 32 33 #ifdef CONFIG_LWIP_ESP_MLDV6_REPORT 34 #define ESP_NETIF_DEFAULT_MLDV6_REPORT_FLAGS (ESP_NETIF_FLAG_MLDV6_REPORT) 35 #else 36 #define ESP_NETIF_DEFAULT_MLDV6_REPORT_FLAGS (0) 37 #endif 38 39 #define ESP_NETIF_INHERENT_DEFAULT_WIFI_STA() \ 40 { \ 41 .flags = (esp_netif_flags_t)(ESP_NETIF_IPV4_ONLY_FLAGS(ESP_NETIF_DHCP_CLIENT) | ESP_NETIF_DEFAULT_ARP_FLAGS | ESP_NETIF_DEFAULT_MLDV6_REPORT_FLAGS | ESP_NETIF_FLAG_EVENT_IP_MODIFIED), \ 42 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 43 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \ 44 .get_ip_event = IP_EVENT_STA_GOT_IP, \ 45 .lost_ip_event = IP_EVENT_STA_LOST_IP, \ 46 .if_key = "WIFI_STA_DEF", \ 47 .if_desc = "sta", \ 48 .route_prio = 100, \ 49 .bridge_info = NULL \ 50 } \ 51 52 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 53 #define ESP_NETIF_INHERENT_DEFAULT_WIFI_AP() \ 54 { \ 55 .flags = (esp_netif_flags_t)(ESP_NETIF_IPV4_ONLY_FLAGS(ESP_NETIF_DHCP_SERVER) | ESP_NETIF_FLAG_AUTOUP), \ 56 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 57 .ip_info = &_g_esp_netif_soft_ap_ip, \ 58 .get_ip_event = 0, \ 59 .lost_ip_event = 0, \ 60 .if_key = "WIFI_AP_DEF", \ 61 .if_desc = "ap", \ 62 .route_prio = 10, \ 63 .bridge_info = NULL \ 64 } 65 #endif 66 67 #define ESP_NETIF_INHERENT_DEFAULT_WIFI_NAN() \ 68 { \ 69 .flags = 0, \ 70 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 71 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \ 72 .get_ip_event = 0, \ 73 .lost_ip_event = 0, \ 74 .if_key = "WIFI_NAN_DEF", \ 75 .if_desc = "nan", \ 76 .route_prio = 10 \ 77 }; 78 79 #define ESP_NETIF_INHERENT_DEFAULT_ETH() \ 80 { \ 81 .flags = (esp_netif_flags_t)(ESP_NETIF_IPV4_ONLY_FLAGS(ESP_NETIF_DHCP_CLIENT) | ESP_NETIF_DEFAULT_ARP_FLAGS | ESP_NETIF_FLAG_EVENT_IP_MODIFIED), \ 82 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 83 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \ 84 .get_ip_event = IP_EVENT_ETH_GOT_IP, \ 85 .lost_ip_event = IP_EVENT_ETH_LOST_IP, \ 86 .if_key = "ETH_DEF", \ 87 .if_desc = "eth", \ 88 .route_prio = 50, \ 89 .bridge_info = NULL \ 90 } 91 92 #ifdef CONFIG_PPP_SUPPORT 93 #define ESP_NETIF_INHERENT_DEFAULT_PPP() \ 94 { \ 95 .flags = ESP_NETIF_FLAG_IS_PPP, \ 96 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 97 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \ 98 .get_ip_event = IP_EVENT_PPP_GOT_IP, \ 99 .lost_ip_event = IP_EVENT_PPP_LOST_IP, \ 100 .if_key = "PPP_DEF", \ 101 .if_desc = "ppp", \ 102 .route_prio = 20, \ 103 .bridge_info = NULL \ 104 } 105 #endif /* CONFIG_PPP_SUPPORT */ 106 107 108 109 110 #define ESP_NETIF_INHERENT_DEFAULT_BR() \ 111 { \ 112 .flags = (esp_netif_flags_t)(ESP_NETIF_DHCP_CLIENT | ESP_NETIF_DEFAULT_ARP_FLAGS | ESP_NETIF_FLAG_EVENT_IP_MODIFIED | ESP_NETIF_FLAG_IS_BRIDGE), \ 113 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(mac) \ 114 ESP_COMPILER_DESIGNATED_INIT_AGGREGATE_TYPE_EMPTY(ip_info) \ 115 .get_ip_event = IP_EVENT_ETH_GOT_IP, \ 116 .lost_ip_event = IP_EVENT_ETH_LOST_IP, \ 117 .if_key = "BR", \ 118 .if_desc = "br", \ 119 .route_prio = 70, \ 120 .bridge_info = NULL \ 121 } 122 123 /** 124 * @brief Default configuration reference of ethernet interface 125 */ 126 #define ESP_NETIF_DEFAULT_ETH() \ 127 { \ 128 .base = ESP_NETIF_BASE_DEFAULT_ETH, \ 129 .driver = NULL, \ 130 .stack = ESP_NETIF_NETSTACK_DEFAULT_ETH, \ 131 } 132 133 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 134 /** 135 * @brief Default configuration reference of WIFI AP 136 */ 137 #define ESP_NETIF_DEFAULT_WIFI_AP() \ 138 { \ 139 .base = ESP_NETIF_BASE_DEFAULT_WIFI_AP, \ 140 .driver = NULL, \ 141 .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP, \ 142 } 143 #endif 144 145 #ifdef CONFIG_ESP_WIFI_NAN_ENABLE 146 /** 147 * @brief Default configuration reference of WIFI NAN 148 */ 149 #define ESP_NETIF_DEFAULT_WIFI_NAN() \ 150 { \ 151 .base = ESP_NETIF_BASE_DEFAULT_WIFI_NAN, \ 152 .driver = NULL, \ 153 .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_NAN, \ 154 } 155 #endif 156 157 /** 158 * @brief Default configuration reference of WIFI STA 159 */ 160 #define ESP_NETIF_DEFAULT_WIFI_STA() \ 161 { \ 162 .base = ESP_NETIF_BASE_DEFAULT_WIFI_STA, \ 163 .driver = NULL, \ 164 .stack = ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA, \ 165 } 166 167 #ifdef CONFIG_PPP_SUPPORT 168 /** 169 * @brief Default configuration reference of PPP client 170 */ 171 #define ESP_NETIF_DEFAULT_PPP() \ 172 { \ 173 .base = ESP_NETIF_BASE_DEFAULT_PPP, \ 174 .driver = NULL, \ 175 .stack = ESP_NETIF_NETSTACK_DEFAULT_PPP, \ 176 } 177 #endif /* CONFIG_PPP_SUPPORT */ 178 179 /** 180 * @brief Default base config (esp-netif inherent) of WIFI STA 181 */ 182 #define ESP_NETIF_BASE_DEFAULT_WIFI_STA &_g_esp_netif_inherent_sta_config 183 184 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 185 /** 186 * @brief Default base config (esp-netif inherent) of WIFI AP 187 */ 188 #define ESP_NETIF_BASE_DEFAULT_WIFI_AP &_g_esp_netif_inherent_ap_config 189 #endif 190 191 #ifdef CONFIG_ESP_WIFI_NAN_ENABLE 192 /** 193 * @brief Default base config (esp-netif inherent) of WIFI NAN 194 */ 195 #define ESP_NETIF_BASE_DEFAULT_WIFI_NAN &_g_esp_netif_inherent_nan_config 196 #endif 197 198 /** 199 * @brief Default base config (esp-netif inherent) of ethernet interface 200 */ 201 #define ESP_NETIF_BASE_DEFAULT_ETH &_g_esp_netif_inherent_eth_config 202 203 #ifdef CONFIG_PPP_SUPPORT 204 /** 205 * @brief Default base config (esp-netif inherent) of ppp interface 206 */ 207 #define ESP_NETIF_BASE_DEFAULT_PPP &_g_esp_netif_inherent_ppp_config 208 #endif 209 210 211 #define ESP_NETIF_NETSTACK_DEFAULT_ETH _g_esp_netif_netstack_default_eth 212 #define ESP_NETIF_NETSTACK_DEFAULT_BR _g_esp_netif_netstack_default_br 213 #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_STA _g_esp_netif_netstack_default_wifi_sta 214 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 215 #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_AP _g_esp_netif_netstack_default_wifi_ap 216 #endif 217 #ifdef CONFIG_ESP_WIFI_NAN_ENABLE 218 #define ESP_NETIF_NETSTACK_DEFAULT_WIFI_NAN _g_esp_netif_netstack_default_wifi_nan 219 #endif 220 #ifdef CONFIG_PPP_SUPPORT 221 #define ESP_NETIF_NETSTACK_DEFAULT_PPP _g_esp_netif_netstack_default_ppp 222 #endif 223 224 // 225 // Include default network stacks configs 226 // - Network stack configurations are provided in a specific network stack 227 // implementation that is invisible to user API 228 // - Here referenced only as opaque pointers 229 // 230 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_eth; 231 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_br; 232 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_sta; 233 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 234 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_ap; 235 #endif 236 #ifdef CONFIG_ESP_WIFI_NAN_ENABLE 237 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_wifi_nan; 238 #endif 239 #ifdef CONFIG_PPP_SUPPORT 240 extern const esp_netif_netstack_config_t *_g_esp_netif_netstack_default_ppp; 241 #endif 242 // 243 // Include default common configs inherent to esp-netif 244 // - These inherent configs are defined in esp_netif_defaults.c and describe 245 // common behavioural patterns for common interfaces such as STA, AP, ETH, PPP 246 // 247 extern const esp_netif_inherent_config_t _g_esp_netif_inherent_sta_config; 248 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 249 extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ap_config; 250 #endif 251 #ifdef CONFIG_ESP_WIFI_NAN_ENABLE 252 extern const esp_netif_inherent_config_t _g_esp_netif_inherent_nan_config; 253 #endif 254 extern const esp_netif_inherent_config_t _g_esp_netif_inherent_eth_config; 255 #ifdef CONFIG_PPP_SUPPORT 256 extern const esp_netif_inherent_config_t _g_esp_netif_inherent_ppp_config; 257 #endif 258 #ifdef CONFIG_ESP_WIFI_SOFTAP_SUPPORT 259 extern const esp_netif_ip_info_t _g_esp_netif_soft_ap_ip; 260 #endif 261 262 #ifdef __cplusplus 263 } 264 #endif 265 266 #endif //_ESP_NETIF_DEFAULTS_H 267