VSF Documented
esp_netif.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2026 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*
19 * Clean-room re-implementation of ESP-IDF public API "esp_netif.h".
20 *
21 * Authored from ESP-IDF v5.x public API only. No code copied from the
22 * ESP-IDF source tree. The VSF port is backed by component/tcpip/netdrv
23 * (vk_netdrv_t) + the lwIP raw API; all IP-layer state lives inside lwIP.
24 *
25 * Coverage: the subset the stage-3 roadmap depends on -- lifecycle,
26 * start/stop, IP info, DHCP client, DNS, hostname, MAC, driver attach.
27 * DHCP server, PPP, bridge, SLAAC helpers are not implemented yet.
28 */
29
30#ifndef __VSF_ESPIDF_ESP_NETIF_H__
31#define __VSF_ESPIDF_ESP_NETIF_H__
32
33#include "esp_err.h"
34#include "esp_event_base.h"
35#include "esp_netif_ip_addr.h"
36#include "esp_netif_types.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/*============================ LIFECYCLE =====================================*/
43
44/* One-time process-wide init. May be called multiple times; subsequent
45 * calls are no-ops. Usually invoked internally by vsf_espidf_init(); user
46 * apps can call it explicitly for defensive reasons. */
48
49/* Deinitialize the process-wide netif layer. Typically unused on VSF. */
51
52/* Allocate a new interface described by cfg. cfg->base must be non-NULL.
53 * Returns NULL on allocation failure or exhausted instance pool. */
55
56/* Release an interface. If it is still running, it is stopped first. */
57void esp_netif_destroy(esp_netif_t *esp_netif);
58
59/*============================ DRIVER ATTACH =================================*/
60
61/* Bind a driver handle to the interface. driver_handle is cast to
62 * esp_netif_driver_base_t *; if its post_attach pointer is set, the port
63 * invokes it so the driver can call esp_netif_set_driver_config(). */
65 esp_netif_iodriver_handle driver_handle);
66
67/* Store the driver ifconfig in the esp_netif. Usually called from the
68 * driver's post_attach implementation. */
71
72/*---------- VSF extension ---------------------------------------------------*/
73
74/* VSF-specific attach path: bind a vk_netdrv_t directly. This is the
75 * primary attach API when the link driver is a native VSF netdrv (e.g.
76 * the wpcap shim). Mutually exclusive with esp_netif_attach(). */
77struct vk_netdrv;
79 struct vk_netdrv *netdrv);
80
81/*============================ ACTIONS =======================================*/
82
83/* Canonical lifecycle actions. esp_netif_action_start() brings the lwIP
84 * netif into the stack (netif_add), applies the configured static IP when
85 * no DHCP client flag is set, and enables link_up + netif_up. The
86 * _connected variant is invoked by drivers when the L2 layer reports
87 * carrier; on VSF it is equivalent to _start. */
90 int32_t event_id, void *data);
93 int32_t event_id, void *data);
96 int32_t event_id, void *data);
99 int32_t event_id, void *data);
101 esp_event_base_t base,
102 int32_t event_id, void *data);
103
104/*============================ IP CONFIGURATION ==============================*/
105
107 const esp_netif_ip_info_t *ip_info);
109 esp_netif_ip_info_t *ip_info);
110
115
120
127
128/*============================ L2 / METADATA =================================*/
129
132
133esp_err_t esp_netif_set_hostname(esp_netif_t *esp_netif, const char *hostname);
134esp_err_t esp_netif_get_hostname(esp_netif_t *esp_netif, const char **hostname);
135
136bool esp_netif_is_netif_up(esp_netif_t *esp_netif);
137const char * esp_netif_get_desc(esp_netif_t *esp_netif);
138const char * esp_netif_get_ifkey(esp_netif_t *esp_netif);
141
142/*============================ ENUMERATION ===================================*/
143
144/* Linear iteration over existing interfaces. Pass NULL to get the first
145 * one; the returned pointer stays valid until esp_netif_destroy. */
147size_t esp_netif_get_nr_of_ifs(void);
148
149/* Lookup by string key (matches esp_netif_inherent_config_t::if_key). */
151
152#ifdef __cplusplus
153}
154#endif
155
156#endif // __VSF_ESPIDF_ESP_NETIF_H__
int esp_err_t
Definition esp_err.h:41
const char * esp_event_base_t
Definition esp_event_base.h:41
esp_err_t esp_netif_set_driver_config(esp_netif_t *esp_netif, const esp_netif_driver_ifconfig_t *cfg)
Definition esp_netif_port.c:288
const char * esp_netif_get_ifkey(esp_netif_t *esp_netif)
Definition esp_netif_port.c:679
esp_err_t esp_netif_action_disconnected(esp_netif_t *esp_netif, esp_event_base_t base, int32_t event_id, void *data)
Definition esp_netif_port.c:438
const char * esp_netif_get_desc(esp_netif_t *esp_netif)
Definition esp_netif_port.c:674
esp_err_t esp_netif_action_got_ip(esp_netif_t *esp_netif, esp_event_base_t base, int32_t event_id, void *data)
Definition esp_netif_port.c:444
esp_err_t esp_netif_dhcpc_get_status(esp_netif_t *esp_netif, esp_netif_dhcp_status_t *status)
Definition esp_netif_port.c:529
esp_err_t esp_netif_set_dns_info(esp_netif_t *esp_netif, esp_netif_dns_type_t type, esp_netif_dns_info_t *dns)
Definition esp_netif_port.c:559
bool esp_netif_is_netif_up(esp_netif_t *esp_netif)
Definition esp_netif_port.c:666
esp_netif_flags_t esp_netif_get_flags(esp_netif_t *esp_netif)
Definition esp_netif_port.c:689
esp_netif_t * esp_netif_get_handle_from_ifkey(const char *ifkey)
Definition esp_netif_port.c:721
esp_err_t esp_netif_attach_netdrv(esp_netif_t *esp_netif, struct vk_netdrv *netdrv)
Definition esp_netif_port.c:298
esp_err_t esp_netif_deinit(void)
Definition esp_netif_port.c:232
esp_err_t esp_netif_get_hostname(esp_netif_t *esp_netif, const char **hostname)
Definition esp_netif_port.c:652
esp_err_t esp_netif_get_mac(esp_netif_t *esp_netif, uint8_t mac[6])
Definition esp_netif_port.c:619
esp_err_t esp_netif_attach(esp_netif_t *esp_netif, esp_netif_iodriver_handle driver_handle)
Definition esp_netif_port.c:274
int esp_netif_get_route_prio(esp_netif_t *esp_netif)
Definition esp_netif_port.c:684
esp_err_t esp_netif_set_hostname(esp_netif_t *esp_netif, const char *hostname)
Definition esp_netif_port.c:632
esp_err_t esp_netif_set_ip_info(esp_netif_t *esp_netif, const esp_netif_ip_info_t *ip_info)
Definition esp_netif_port.c:453
esp_err_t esp_netif_action_start(esp_netif_t *esp_netif, esp_event_base_t base, int32_t event_id, void *data)
Definition esp_netif_port.c:318
esp_err_t esp_netif_dhcpc_start(esp_netif_t *esp_netif)
Definition esp_netif_port.c:483
esp_err_t esp_netif_dhcps_stop(esp_netif_t *esp_netif)
Definition esp_netif_port.c:544
esp_err_t esp_netif_dhcps_get_status(esp_netif_t *esp_netif, esp_netif_dhcp_status_t *status)
Definition esp_netif_port.c:549
esp_err_t esp_netif_action_connected(esp_netif_t *esp_netif, esp_event_base_t base, int32_t event_id, void *data)
Definition esp_netif_port.c:432
esp_netif_t * esp_netif_new(const esp_netif_config_t *cfg)
Definition esp_netif_port.c:243
esp_err_t esp_netif_set_mac(esp_netif_t *esp_netif, uint8_t mac[6])
Definition esp_netif_port.c:602
void esp_netif_destroy(esp_netif_t *esp_netif)
Definition esp_netif_port.c:261
esp_err_t esp_netif_get_dns_info(esp_netif_t *esp_netif, esp_netif_dns_type_t type, esp_netif_dns_info_t *dns)
Definition esp_netif_port.c:579
esp_err_t esp_netif_action_stop(esp_netif_t *esp_netif, esp_event_base_t base, int32_t event_id, void *data)
Definition esp_netif_port.c:398
size_t esp_netif_get_nr_of_ifs(void)
Definition esp_netif_port.c:710
esp_err_t esp_netif_get_ip_info(esp_netif_t *esp_netif, esp_netif_ip_info_t *ip_info)
Definition esp_netif_port.c:474
esp_err_t esp_netif_init(void)
Definition esp_netif_port.c:222
esp_netif_t * esp_netif_next(esp_netif_t *esp_netif)
Definition esp_netif_port.c:696
esp_err_t esp_netif_dhcpc_stop(esp_netif_t *esp_netif)
Definition esp_netif_port.c:509
esp_err_t esp_netif_dhcps_start(esp_netif_t *esp_netif)
Definition esp_netif_port.c:539
esp_netif_flags_t
Definition esp_netif_types.h:85
esp_netif_dns_type_t
Definition esp_netif_types.h:69
esp_netif_dhcp_status_t
Definition esp_netif_types.h:77
void * esp_netif_iodriver_handle
Definition esp_netif_types.h:49
struct ieee80211_ext_chansw_ie data
Definition ieee80211.h:80
int int32_t
Definition stdint.h:8
unsigned char uint8_t
Definition stdint.h:5
Definition esp_netif_types.h:129
Definition esp_netif_types.h:64
Definition esp_netif_types.h:112
Definition esp_netif_types.h:52
Definition esp_netif_port.c:80
vk_av_control_type_t type
Definition vsf_audio.h:170
uint8_t status
Definition vsf_tgui.h:144
Generated from commit: vsfteam/vsf@015f4d1