mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-21 22:07:49 +00:00
Basic RPC stuff in Packet and PacketDecoder for RPC service support.
This commit is contained in:
parent
10fc164fcb
commit
668c428051
@ -13,10 +13,7 @@ STRIP=strip
|
|||||||
#STRIP=echo
|
#STRIP=echo
|
||||||
|
|
||||||
CXXFLAGS=$(CFLAGS) -fno-rtti
|
CXXFLAGS=$(CFLAGS) -fno-rtti
|
||||||
|
LIBS=-lcrypto
|
||||||
# We statically link against libcrypto since Apple has apparently decided
|
|
||||||
# to deprecate it and may remove it in future OS releases.
|
|
||||||
LIBS=ext/bin/libcrypto/mac-x86_combined/libcrypto.a
|
|
||||||
|
|
||||||
include objects.mk
|
include objects.mk
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ void NodeConfig::_CBcontrolPacketHandler(UdpSocket *sock,void *arg,const InetAdd
|
|||||||
sock->send(remoteAddr,p->data(),p->size(),-1);
|
sock->send(remoteAddr,p->data(),p->size(),-1);
|
||||||
}
|
}
|
||||||
} catch ( ... ) {
|
} catch ( ... ) {
|
||||||
TRACE("exception handling control bus packet from %s",remoteAddr.toString.c_str());
|
TRACE("exception handling control bus packet from %s",remoteAddr.toString().c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ const char *Packet::verbString(Verb v)
|
|||||||
case VERB_FRAME: return "FRAME";
|
case VERB_FRAME: return "FRAME";
|
||||||
case VERB_MULTICAST_FRAME: return "MULTICAST_FRAME";
|
case VERB_MULTICAST_FRAME: return "MULTICAST_FRAME";
|
||||||
case VERB_MULTICAST_LIKE: return "MULTICAST_LIKE";
|
case VERB_MULTICAST_LIKE: return "MULTICAST_LIKE";
|
||||||
|
case VERB_RPC: return "RPC";
|
||||||
}
|
}
|
||||||
return "(unknown)";
|
return "(unknown)";
|
||||||
}
|
}
|
||||||
|
@ -463,7 +463,26 @@ public:
|
|||||||
*
|
*
|
||||||
* No OK or ERROR is generated.
|
* No OK or ERROR is generated.
|
||||||
*/
|
*/
|
||||||
VERB_MULTICAST_FRAME = 9
|
VERB_MULTICAST_FRAME = 9,
|
||||||
|
|
||||||
|
/* Call a plugin via RPC:
|
||||||
|
* <[1] length of function name>
|
||||||
|
* <[...] function name>
|
||||||
|
* [<[2] length of argument>]
|
||||||
|
* [<[...] argument>]
|
||||||
|
* [... additional length/argument pairs ...]
|
||||||
|
*
|
||||||
|
* This generates ERROR_NOT_FOUND if the specified function was not
|
||||||
|
* found. Otherwise it generates an OK message. The OK message has
|
||||||
|
* the same format as the request, except arguments are replaced
|
||||||
|
* by results.
|
||||||
|
*
|
||||||
|
* This can be used to implement simple RPC. No retransmission or
|
||||||
|
* other guarantees are made, so it behaves like UDP-based RPC
|
||||||
|
* protocols. Plugins are typically run by supernodes and are used
|
||||||
|
* to implement network lookup and other services.
|
||||||
|
*/
|
||||||
|
VERB_RPC = 10
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -102,6 +102,8 @@ bool PacketDecoder::tryDecode(const RuntimeEnvironment *_r)
|
|||||||
return _doMULTICAST_LIKE(_r,peer);
|
return _doMULTICAST_LIKE(_r,peer);
|
||||||
case Packet::VERB_MULTICAST_FRAME:
|
case Packet::VERB_MULTICAST_FRAME:
|
||||||
return _doMULTICAST_FRAME(_r,peer);
|
return _doMULTICAST_FRAME(_r,peer);
|
||||||
|
case Packet::VERB_RPC:
|
||||||
|
return _doRPC(_r,peer);
|
||||||
default:
|
default:
|
||||||
// This might be something from a new or old version of the protocol.
|
// This might be something from a new or old version of the protocol.
|
||||||
// Technically it passed HMAC so the packet is still valid, but we
|
// Technically it passed HMAC so the packet is still valid, but we
|
||||||
@ -538,4 +540,8 @@ bool PacketDecoder::_doMULTICAST_FRAME(const RuntimeEnvironment *_r,const Shared
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PacketDecoder::_doRPC(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace ZeroTier
|
} // namespace ZeroTier
|
||||||
|
@ -122,6 +122,7 @@ private:
|
|||||||
bool _doFRAME(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
bool _doFRAME(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
||||||
bool _doMULTICAST_LIKE(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
bool _doMULTICAST_LIKE(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
||||||
bool _doMULTICAST_FRAME(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
bool _doMULTICAST_FRAME(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
||||||
|
bool _doRPC(const RuntimeEnvironment *_r,const SharedPtr<Peer> &peer);
|
||||||
|
|
||||||
uint64_t _receiveTime;
|
uint64_t _receiveTime;
|
||||||
Demarc::Port _localPort;
|
Demarc::Port _localPort;
|
||||||
|
Loading…
Reference in New Issue
Block a user