| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*
- * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #include "esp_err.h"
- #include "esp_netif.h" // esp-netif
- #include "tapio.h" // esp-netif's driver side
- #include "lwip/tapif.h" // esp-netif's network stack side
- esp_err_t example_connect(void)
- {
- #if CONFIG_EXAMPLE_CONNECT_LWIP_TAPIF
- // configure linux tapio
- esp_netif_driver_ifconfig_t driver_cfg = {
- .handle = tapio_create(),
- .transmit = tapio_output,
- };
- // configure lwip netif for the tapif
- struct esp_netif_netstack_config stack_cfg = {
- .lwip = {
- .init_fn = lwip_tapif_init,
- .input_fn = lwip_tapif_input,
- }
- };
- // configure inherent esp-netif parameters
- esp_netif_ip_info_t ip_info = {};
- ip_info.ip.addr = ipaddr_addr(CONFIG_EXAMPLE_CONNECT_TAPIF_IP_ADDR);
- ip_info.netmask.addr = ipaddr_addr(CONFIG_EXAMPLE_CONNECT_TAPIF_NETMASK);
- ip_info.gw.addr = ipaddr_addr(CONFIG_EXAMPLE_CONNECT_TAPIF_GW);
- esp_netif_inherent_config_t base_cfg = {
- .if_key = "TAP",
- .flags = ESP_NETIF_FLAG_AUTOUP,
- .ip_info = &ip_info,
- .route_prio = 100
- };
- // put all configs together
- esp_netif_config_t cfg = {
- .base = &base_cfg,
- .driver = &driver_cfg,
- .stack = &stack_cfg
- };
- // create the interface and attach it to the tapio-handle
- esp_netif_t *tap_netif = esp_netif_new(&cfg);
- esp_netif_attach(tap_netif, driver_cfg.handle);
- #endif // EXAMPLE_CONNECT_LWIP_TAPIF
- return ESP_OK;
- }
|