use vpn::NetworkInterface for add/del route via interface instead of string

pull/1721/head
Jeff Becker 3 years ago
parent c9b9ed91c2
commit 07a58ffa6c
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -84,10 +84,10 @@ namespace llarp::vpn
DelDefaultRouteViaInterface(std::string ifname) = 0;
virtual void
AddRouteViaInterface(std::string ifname, IPRange range) = 0;
AddRouteViaInterface(NetworkInterface& vpn, IPRange range) = 0;
virtual void
DelRouteViaInterface(std::string ifname, IPRange range) = 0;
DelRouteViaInterface(NetworkInterface& vpn, IPRange range) = 0;
virtual std::vector<IPVariant_t>
GetGatewaysNotOnInterface(std::string ifname) = 0;

@ -395,15 +395,15 @@ namespace llarp::vpn
}
void
AddRouteViaInterface(std::string ifname, IPRange range) override
AddRouteViaInterface(NetworkInterface& vpn, IPRange range) override
{
RouteViaInterface(RTM_NEWROUTE, NLM_F_CREATE | NLM_F_EXCL, ifname, range);
RouteViaInterface(RTM_NEWROUTE, NLM_F_CREATE | NLM_F_EXCL, vpn.IfName(), range);
}
void
DelRouteViaInterface(std::string ifname, IPRange range) override
DelRouteViaInterface(NetworkInterface& vpn, IPRange range) override
{
RouteViaInterface(RTM_DELROUTE, 0, ifname, range);
RouteViaInterface(RTM_DELROUTE, 0, vpn.IfName(), range);
}
std::vector<IPVariant_t>

@ -175,7 +175,7 @@ namespace llarp::vpn
std::vector<std::thread> m_Threads;
thread::Queue<net::IPPacket> m_ReadQueue;
const InterfaceInfo m_Info;
InterfaceInfo m_Info;
static std::wstring
get_win_sys_path()
@ -274,6 +274,7 @@ namespace llarp::vpn
IPADDR sock[3]{};
const nuint32_t addr = xhtonl(net::TruncateV6(ifaddr.range.addr));
ip = net::TruncateV6(ifaddr.range.addr);
m_Info.ifname = ip.ToString();
const nuint32_t mask = xhtonl(net::TruncateV6(ifaddr.range.netmask_bits));
LogInfo("address ", addr, " netmask ", mask);
sock[0] = addr.n;
@ -409,7 +410,7 @@ namespace llarp::vpn
std::string
IfName() const override
{
return "";
return m_Info.ifname;
}
void
@ -577,15 +578,15 @@ namespace llarp::vpn
}
void
AddRouteViaInterface(std::string ifname, IPRange range) override
AddRouteViaInterface(NetworkInterface& vpn, IPRange range) override
{
RouteViaInterface(ifname, range, "ADD");
RouteViaInterface(vpn.IfName(), range, "ADD");
}
void
DelRouteViaInterface(std::string ifname, IPRange range) override
DelRouteViaInterface(NetworkInterface& vpn, IPRange range) override
{
RouteViaInterface(ifname, range, "DELETE");
RouteViaInterface(vpn.IfName(), range, "DELETE");
}
std::vector<IPVariant_t>

Loading…
Cancel
Save