Files
utun2/src/tun_route.h
T
evgeny 38c9f229bc stcp: ed25519 pubkey exchange in handshake, fix instance destroy segfault, fix chat_tcp_test
- 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
2026-08-07 00:48:27 +03:00

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 */