mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 20:43:44 +02:00
Linux build fixes, and new route code seems to work.
This commit is contained in:
parent
5ea7ef6b65
commit
4aab9121d9
3 changed files with 10 additions and 8 deletions
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
#include "../node/Constants.hpp"
|
#include "../node/Constants.hpp"
|
||||||
|
|
||||||
#define ZT_NETLINK_TRACE
|
//#define ZT_NETLINK_TRACE
|
||||||
|
|
||||||
#ifdef __LINUX__
|
#ifdef __LINUX__
|
||||||
|
|
||||||
|
@ -357,7 +357,7 @@ void LinuxNetLink::_routeAdded(struct nlmsghdr *nlp)
|
||||||
|
|
||||||
if (wecare) {
|
if (wecare) {
|
||||||
Mutex::Lock rl(_routes_m);
|
Mutex::Lock rl(_routes_m);
|
||||||
_routes[target].insert(r);
|
_routes[r.target].insert(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ZT_NETLINK_TRACE
|
#ifdef ZT_NETLINK_TRACE
|
||||||
|
@ -445,7 +445,7 @@ void LinuxNetLink::_routeDeleted(struct nlmsghdr *nlp)
|
||||||
|
|
||||||
if (wecare) {
|
if (wecare) {
|
||||||
Mutex::Lock rl(_routes_m);
|
Mutex::Lock rl(_routes_m);
|
||||||
_routes[target].erase(r);
|
_routes[r.target].erase(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ZT_NETLINK_TRACE
|
#ifdef ZT_NETLINK_TRACE
|
||||||
|
@ -1145,12 +1145,12 @@ void LinuxNetLink::removeAddress(const InetAddress &addr, const char *iface)
|
||||||
bool LinuxNetLink::routeIsSet(const InetAddress &target, const InetAddress &via, const InetAddress &src, const char *ifname)
|
bool LinuxNetLink::routeIsSet(const InetAddress &target, const InetAddress &via, const InetAddress &src, const char *ifname)
|
||||||
{
|
{
|
||||||
Mutex::Lock rl(_routes_m);
|
Mutex::Lock rl(_routes_m);
|
||||||
const std::set<Route> &rs = _routes[target];
|
const std::set<LinuxNetLink::Route> &rs = _routes[target];
|
||||||
for(std::set<Route>::const_iterator ri(rs.begin());ri!=rs.end();++ri) {
|
for(std::set<LinuxNetLink::Route>::const_iterator ri(rs.begin());ri!=rs.end();++ri) {
|
||||||
if ((ri->via == via)&&(ri->src == src)) {
|
if ((ri->via == via)&&(ri->src == src)) {
|
||||||
if (ifname) {
|
if (ifname) {
|
||||||
Mutex::Lock ifl(_if_m);
|
Mutex::Lock ifl(_if_m);
|
||||||
const iface_entry *ife = _interfaces.get(rs->ifidx);
|
const iface_entry *ife = _interfaces.get(ri->ifidx);
|
||||||
if ((ife)&&(!strncmp(ife->ifacename,ifname,IFNAMSIZ)))
|
if ((ife)&&(!strncmp(ife->ifacename,ifname,IFNAMSIZ)))
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#ifdef __LINUX__
|
#ifdef __LINUX__
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
|
@ -123,7 +125,7 @@ private:
|
||||||
|
|
||||||
uint32_t _seq;
|
uint32_t _seq;
|
||||||
|
|
||||||
std::map< InetAddress,std::set<Route> > _routes;
|
std::map< InetAddress,std::set<LinuxNetLink::Route> > _routes;
|
||||||
Mutex _routes_m;
|
Mutex _routes_m;
|
||||||
|
|
||||||
struct iface_entry {
|
struct iface_entry {
|
||||||
|
|
|
@ -519,7 +519,7 @@ bool ManagedRoute::sync()
|
||||||
#ifdef __LINUX__ // ----------------------------------------------------------
|
#ifdef __LINUX__ // ----------------------------------------------------------
|
||||||
|
|
||||||
const char *const devptr = (_via) ? (const char *)0 : _device;
|
const char *const devptr = (_via) ? (const char *)0 : _device;
|
||||||
if (!LinuxNetLink::getInstance().routeIsSet(leftt,_via,_src,devptr)) {
|
if ((leftt)&&(!LinuxNetLink::getInstance().routeIsSet(leftt,_via,_src,devptr))) {
|
||||||
_applied[leftt] = false; // boolean unused
|
_applied[leftt] = false; // boolean unused
|
||||||
LinuxNetLink::getInstance().addRoute(leftt, _via, _src, devptr);
|
LinuxNetLink::getInstance().addRoute(leftt, _via, _src, devptr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue