- u_async.c: process immediate_queue BEFORE epoll_wait in uasync_poll - stcp_link.c: defensive NULL etcp_conn/etcp_link in stcp_link_close - utun_instance.c: move stcp_server_list_destroy_all to Phase J (before ETCP), add deferred drain in both Phase J and L - stcp.h/c: STCP_HS_ENC_CLIENT 6→38, STCP_HS_ENC_SERVER 7→39, exchange ed25519_pubkey in both handshake directions - etcp_connections.c: copy peer_ed25519 from STCP to ETCP_CONN in etcp_link_enter_ready_tcp; guard link->etcp in tcp_link_close_cb - chat_sync.c: fix lk->conn NULL dereference for TCP links - test_stcp.c: update stcp_server_create/stcp_client_connect callsites - tools/chat_tcp_test: change transport udp→tcp
64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
// tun_route.h - Cross-platform system routing table management
|
|
#ifndef TUN_ROUTE_H
|
|
#define TUN_ROUTE_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct CFG_ROUTE_ENTRY;
|
|
|
|
/**
|
|
* @brief Add system route for a subnet via TUN interface
|
|
* @param ifindex Interface index
|
|
* @param ifname Interface name (e.g., "tun0")
|
|
* @param network Network address in host byte order
|
|
* @param prefix_len Prefix length (1-32)
|
|
* @return 0 on success, -1 on error
|
|
*/
|
|
int tun_route_add(uint32_t ifindex, const char *ifname, uint32_t network, uint8_t prefix_len);
|
|
|
|
/**
|
|
* @brief Delete system route for a subnet via TUN interface
|
|
* @param ifindex Interface index
|
|
* @param ifname Interface name (e.g., "tun0")
|
|
* @param network Network address in host byte order
|
|
* @param prefix_len Prefix length (1-32)
|
|
* @return 0 on success, -1 on error
|
|
*/
|
|
int tun_route_del(uint32_t ifindex, const char *ifname, uint32_t network, uint8_t prefix_len);
|
|
|
|
/**
|
|
* @brief Delete all system routes from config entries
|
|
* @param ifindex Interface index
|
|
* @param ifname Interface name (e.g., "tun0")
|
|
* @param routes Linked list of route entries to delete
|
|
* @return Number of routes deleted
|
|
*/
|
|
int tun_route_del_all(uint32_t ifindex, const char *ifname, struct CFG_ROUTE_ENTRY *routes);
|
|
|
|
/**
|
|
* @brief Delete all system routes via specified interface
|
|
* @param ifname Interface name (e.g., "tun0")
|
|
* @return 0 on success, -1 on error
|
|
*/
|
|
int tun_route_flush(const char *ifname);
|
|
|
|
/**
|
|
* @brief Add multiple routes from config entries
|
|
* @param ifindex Interface index
|
|
* @param ifname Interface name (e.g., "tun0") - for logging only
|
|
* @param routes Linked list of route entries
|
|
* @return Number of routes added successfully
|
|
*/
|
|
int tun_route_add_all(uint32_t ifindex, const char *ifname, struct CFG_ROUTE_ENTRY *routes);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* TUN_ROUTE_H */
|