diff options
Diffstat (limited to 'src/lwipDriver.hpp')
| -rw-r--r-- | src/lwipDriver.hpp | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/src/lwipDriver.hpp b/src/lwipDriver.hpp deleted file mode 100644 index c2bcd9a..0000000 --- a/src/lwipDriver.hpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Copyright (c)2013-2020 ZeroTier, Inc. - * - * Use of this software is governed by the Business Source License included - * in the LICENSE.TXT file in the project's root directory. - * - * Change Date: 2024-01-01 - * - * On the date above, in accordance with the Business Source License, use - * of this software will be governed by version 2.0 of the Apache License. - */ -/****/ - -/** - * @file - * - * lwIP network stack driver - */ - -#ifndef LIBZT_LWIP_DRIVER_HPP -#define LIBZT_LWIP_DRIVER_HPP - -#include "Debug.hpp" -#include "lwip/err.h" - -namespace ZeroTier { - -class MAC; -class Mutex; -class VirtualTap; -struct InetAddress; - -/** - * @brief Structure used to associate packets with interfaces. - */ -struct zts_sorted_packet -{ - // lwIP pbuf containing packet (originally encapsulated by ZT packet) - struct pbuf *p; - // ZT VirtualTap from which this packet originates - VirtualTap *vtap; - // lwIP netif we should accept this packet on - struct netif *n; -}; - -/** - * @brief Return whether a given netif's NETIF_FLAG_UP flag is set - * - * @usage This is a convenience function to encapsulate a macro - */ -bool lwip_is_netif_up(void *netif); - -/** - * @brief Increase the delay multiplier for the main driver loop - * - * @usage This should be called when we know the stack won't be used by any virtual taps - */ -void lwip_hibernate_driver(); - -/** - * @brief Decrease the delay multiplier for the main driver loop - * - * @usage This should be called when at least one virtual tap is active - */ -void lwip_wake_driver(); - -/** - * Returns whether the lwIP network stack is up and ready to process traffic - */ -bool lwip_is_up(); - -/** - * @brief Initialize network stack semaphores, threads, and timers. - * - * @usage This is called during the initial setup of each VirtualTap but is only allowed to execute once - * @return - */ -void lwip_driver_init(); - -/** - * @brief Shutdown the stack as completely as possible (not officially supported by lwIP) - * - * @usage This is to be called after it is determined that no further network activity will take place. - * The tcpip thread will be stopped, all interfaces will be brought down and all resources will - * be deallocated. A full application restart will be required to bring the stack back online. - * @return - */ -void lwip_driver_shutdown(); - -/** - * @brief Requests that a netif be brought down and removed. - * - * @return - */ -void lwip_remove_netif(void *netif); - -/** - * @brief Initialize and start the DNS client - * - * @usage Called after lwip_driver_init() - * @return - */ -void lwip_dns_init(); - -/** - * @brief Starts DHCP timers - * - * @usage lwip_driver_init() - * @return - */ -void lwip_start_dhcp(void *netif); - -/** - * @brief Called when the status of a netif changes: - * - Interface is up/down (ZTS_EVENT_NETIF_UP, ZTS_EVENT_NETIF_DOWN) - * - Address changes while up (ZTS_EVENT_NETIF_NEW_ADDRESS) - */ -#if LWIP_NETIF_STATUS_CALLBACK -static void netif_status_callback(struct netif *netif); -#endif - -/** - * @brief Called when a netif is removed (ZTS_EVENT_NETIF_INTERFACE_REMOVED) - */ -#if LWIP_NETIF_REMOVE_CALLBACK -static void netif_remove_callback(struct netif *netif); -#endif - -/** - * @brief Called when a link is brought up or down (ZTS_EVENT_NETIF_LINK_UP, ZTS_EVENT_NETIF_LINK_DOWN) - */ -#if LWIP_NETIF_LINK_CALLBACK -static void netif_link_callback(struct netif *netif); -#endif - -/** - * @brief Set up an interface in the network stack for the VirtualTap. - * - * @param - * @param tapref Reference to VirtualTap that will be responsible for sending and receiving data - * @param ip Virtual IP address for this ZeroTier VirtualTap interface - * @return - */ -void lwip_init_interface(void *tapref, const InetAddress &ip); - -/** - * @brief Called from the stack, outbound ethernet frames from the network stack enter the ZeroTier virtual wire here. - * - * @usage This shall only be called from the stack or the stack driver. Not the application thread. - * @param netif Transmits an outgoing Ethernet fram from the network stack onto the ZeroTier virtual wire - * @param p A pointer to the beginning of a chain pf struct pbufs - * @return - */ -err_t lwip_eth_tx(struct netif *netif, struct pbuf *p); - -/** - * @brief Receives incoming Ethernet frames from the ZeroTier virtual wire - * - * @usage This shall be called from the VirtualTap's I/O thread (via VirtualTap::put()) - * @param tap Pointer to VirtualTap from which this data comes - * @param from Origin address (virtual ZeroTier hardware address) - * @param to Intended destination address (virtual ZeroTier hardware address) - * @param etherType Protocol type - * @param data Pointer to Ethernet frame - * @param len Length of Ethernet frame - * @return - */ -void lwip_eth_rx(VirtualTap *tap, const MAC &from, const MAC &to, unsigned int etherType, - const void *data, unsigned int len); - -} // namespace ZeroTier - -#endif // _H |
