11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
20PROMEKI_NAMESPACE_BEGIN
57 NetworkRouting() =
delete;
58 ~NetworkRouting() =
delete;
68 static NetworkAddress defaultGatewayIpv4();
71 static NetworkAddress defaultGatewayIpv6();
80 static NetworkInterface defaultRouteInterfaceIpv4();
83 static NetworkInterface defaultRouteInterfaceIpv6();
99 static Ipv4Address sourceAddressFor(
const Ipv4Address &dest);
113 static Ipv6Address sourceAddressFor(
const Ipv6Address &dest);
126 static List<NetworkAddress> dnsServers();
145 NetworkAddress destination;
147 NetworkAddress gateway;
148 NetworkInterface iface;
175 static List<Route> routesFor(
const Ipv4Address &dest);
181 static List<Route> routesFor(
const Ipv6Address &dest);
200 virtual ~Backend() =
default;
203 virtual NetworkAddress defaultGatewayIpv4()
const = 0;
206 virtual NetworkAddress defaultGatewayIpv6()
const = 0;
209 virtual NetworkInterface defaultRouteInterfaceIpv4()
const = 0;
212 virtual NetworkInterface defaultRouteInterfaceIpv6()
const = 0;
215 virtual List<NetworkAddress> dnsServers()
const = 0;
218 virtual List<Route> routesForIpv4(
const Ipv4Address &dest)
const = 0;
221 virtual List<Route> routesForIpv6(
const Ipv6Address &dest)
const = 0;
232 static void setBackend(Backend *backend);
235 static Backend *backend();