You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.8 KiB
63 lines
1.8 KiB
// 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 */
|
|
|