1
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
32
33
34
38
39
42
43
46
47
48
49
50
51
52
55
59
60
64
68
69
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* ... */
#pragma once
#include "esp_netif.h"
#include "esp_netif_ppp.h"
#include "lwip/netif.h"
#include "lwip/esp_netif_net_stack.h"
#ifdef CONFIG_LWIP_DHCPS
#include "dhcpserver/dhcpserver.h"
#endif
struct esp_netif_api_msg_s;
typedef int (*esp_netif_api_fn)(struct esp_netif_api_msg_s *msg);
typedef struct esp_netif_api_msg_s {
int type;
int ret;
esp_netif_api_fn api_fn;
union {
esp_netif_t *esp_netif;
esp_netif_t **p_esp_netif;
esp_netif_callback_fn user_fn;
}{ ... };
void *data;
}{ ... } esp_netif_api_msg_t;
typedef struct esp_netif_dns_param_s {
esp_netif_dns_type_t dns_type;
esp_netif_dns_info_t *dns_info;
}{ ... } esp_netif_dns_param_t;
typedef struct esp_netif_ip_lost_timer_s {
bool timer_running;
}{ ... } esp_netif_ip_lost_timer_t;
/* ... */
#if CONFIG_PPP_SUPPORT
#define ESP_NETIF_IS_POINT2POINT_TYPE(netif, type) (netif->related_data && netif->related_data->is_point2point && netif->related_data->netif_type == type)
#else
#define ESP_NETIF_IS_POINT2POINT_TYPE(netif, type) false
#endif
/* ... */
enum netif_types {
COMMON_LWIP_NETIF,
PPP_LWIP_NETIF,
}{ ... };
/* ... */
typedef struct netif_related_data {
bool is_point2point;
enum netif_types netif_type;
}{ ... } netif_related_data_t;
/* ... */
struct esp_netif_obj {
uint8_t mac[NETIF_MAX_HWADDR_LEN];
esp_netif_ip_info_t* ip_info;
esp_netif_ip_info_t* ip_info_old;
struct netif *lwip_netif;
err_t (*lwip_init_fn)(struct netif*);
esp_netif_recv_ret_t (*lwip_input_fn)(void *input_netif_handle, void *buffer, size_t len, void *eb);
void * netif_handle;
netif_related_data_t *related_data;
#if ESP_DHCPS
dhcps_t *dhcps;
#endif
void* driver_handle;
esp_err_t (*driver_transmit)(void *h, void *buffer, size_t len);
esp_err_t (*driver_transmit_wrap)(void *h, void *buffer, size_t len, void *pbuf);
void (*driver_free_rx_buffer)(void *h, void* buffer);
esp_netif_dhcp_status_t dhcpc_status;
esp_netif_dhcp_status_t dhcps_status;
bool timer_running;
ip_event_t get_ip_event;
ip_event_t lost_ip_event;
#ifdef CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC
bool tx_rx_events_enabled;
#endif
esp_netif_flags_t flags;
char * hostname;
char * if_key;
char * if_desc;
int route_prio;
#if CONFIG_ESP_NETIF_BRIDGE_EN
uint16_t max_fdb_dyn_entries;
uint16_t max_fdb_sta_entries;
uint8_t max_ports;/* ... */
#endif
bool mldv6_report_timer_started;
#ifdef CONFIG_ESP_NETIF_SET_DNS_PER_DEFAULT_NETIF
ip_addr_t dns[DNS_MAX_SERVERS];
#endif
}{ ... };
typedef enum esp_netif_set_default_state {
ESP_NETIF_UNDEF,
ESP_NETIF_STARTED,
ESP_NETIF_GOT_IP,
ESP_NETIF_STOPPED,
ESP_NETIF_LOST_IP,
ESP_NETIF_SET_DEFAULT,
}{ ... } esp_netif_route_prio_action_t;
esp_err_t esp_netif_update_default_netif(esp_netif_t *esp_netif, esp_netif_route_prio_action_t action);