esp_netif_defaults.h 9.3 KB

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