Have caller into inner protocol send cursor in case it needs to be different from 0/1.

This commit is contained in:
Adam Ierymenko 2022-10-23 12:47:19 -07:00
parent b0ffd4f56b
commit 752dbf4816
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3
4 changed files with 18 additions and 36 deletions

View file

@ -97,30 +97,8 @@ impl<DatabaseImpl: Database> Handler<DatabaseImpl> {
} }
} }
impl<DatabaseImpl: Database> PathFilter for Handler<DatabaseImpl> { // Default PathFilter implementations permit anything.
fn should_use_physical_path<HostSystemImpl: HostSystem + ?Sized>( impl<DatabaseImpl: Database> PathFilter for Handler<DatabaseImpl> {}
&self,
_id: &Identity,
_endpoint: &zerotier_network_hypervisor::vl1::Endpoint,
_local_socket: Option<&HostSystemImpl::LocalSocket>,
_local_interface: Option<&HostSystemImpl::LocalInterface>,
) -> bool {
true
}
fn get_path_hints<HostSystemImpl: HostSystem + ?Sized>(
&self,
_id: &Identity,
) -> Option<
Vec<(
zerotier_network_hypervisor::vl1::Endpoint,
Option<HostSystemImpl::LocalSocket>,
Option<HostSystemImpl::LocalInterface>,
)>,
> {
None
}
}
impl<DatabaseImpl: Database> InnerProtocol for Handler<DatabaseImpl> { impl<DatabaseImpl: Database> InnerProtocol for Handler<DatabaseImpl> {
fn handle_packet<HostSystemImpl: HostSystem + ?Sized>( fn handle_packet<HostSystemImpl: HostSystem + ?Sized>(
@ -133,11 +111,10 @@ impl<DatabaseImpl: Database> InnerProtocol for Handler<DatabaseImpl> {
message_id: u64, message_id: u64,
verb: u8, verb: u8,
payload: &PacketBuffer, payload: &PacketBuffer,
mut cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
match verb { match verb {
protocol::verbs::VL2_VERB_NETWORK_CONFIG_REQUEST => { protocol::verbs::VL2_VERB_NETWORK_CONFIG_REQUEST => {
let mut cursor = 1;
let network_id = payload.read_u64(&mut cursor); let network_id = payload.read_u64(&mut cursor);
if network_id.is_err() { if network_id.is_err() {
return PacketHandlerResult::Error; return PacketHandlerResult::Error;
@ -242,7 +219,7 @@ impl<DatabaseImpl: Database> InnerProtocol for Handler<DatabaseImpl> {
_in_re_message_id: u64, _in_re_message_id: u64,
_error_code: u8, _error_code: u8,
_payload: &PacketBuffer, _payload: &PacketBuffer,
_cursor: &mut usize, _cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }
@ -258,7 +235,7 @@ impl<DatabaseImpl: Database> InnerProtocol for Handler<DatabaseImpl> {
_in_re_verb: u8, _in_re_verb: u8,
_in_re_message_id: u64, _in_re_message_id: u64,
_payload: &PacketBuffer, _payload: &PacketBuffer,
_cursor: &mut usize, _cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }

View file

@ -154,6 +154,7 @@ pub trait InnerProtocol: Sync + Send {
message_id: u64, message_id: u64,
verb: u8, verb: u8,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: usize,
) -> PacketHandlerResult; ) -> PacketHandlerResult;
/// Handle errors, returning true if the error was recognized. /// Handle errors, returning true if the error was recognized.
@ -169,7 +170,7 @@ pub trait InnerProtocol: Sync + Send {
in_re_message_id: u64, in_re_message_id: u64,
error_code: u8, error_code: u8,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: &mut usize, cursor: usize,
) -> PacketHandlerResult; ) -> PacketHandlerResult;
/// Handle an OK, returing true if the OK was recognized. /// Handle an OK, returing true if the OK was recognized.
@ -184,7 +185,7 @@ pub trait InnerProtocol: Sync + Send {
in_re_verb: u8, in_re_verb: u8,
in_re_message_id: u64, in_re_message_id: u64,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: &mut usize, cursor: usize,
) -> PacketHandlerResult; ) -> PacketHandlerResult;
/// Check if this node should respond to messages from a given peer. /// Check if this node should respond to messages from a given peer.
@ -1092,6 +1093,7 @@ impl InnerProtocol for DummyInnerProtocol {
_message_id: u64, _message_id: u64,
_verb: u8, _verb: u8,
_payload: &PacketBuffer, _payload: &PacketBuffer,
_cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }
@ -1109,7 +1111,7 @@ impl InnerProtocol for DummyInnerProtocol {
_in_re_message_id: u64, _in_re_message_id: u64,
_error_code: u8, _error_code: u8,
_payload: &PacketBuffer, _payload: &PacketBuffer,
_cursor: &mut usize, _cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }
@ -1126,7 +1128,7 @@ impl InnerProtocol for DummyInnerProtocol {
_in_re_verb: u8, _in_re_verb: u8,
_in_re_message_id: u64, _in_re_message_id: u64,
_payload: &PacketBuffer, _payload: &PacketBuffer,
_cursor: &mut usize, _cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }

View file

@ -585,6 +585,7 @@ impl Peer {
message_id, message_id,
verb, verb,
&payload, &payload,
1,
), ),
}; };
} }
@ -682,7 +683,7 @@ impl Peer {
in_re_message_id, in_re_message_id,
error_header.error_code, error_header.error_code,
payload, payload,
&mut cursor, cursor,
); );
} }
} }
@ -782,7 +783,7 @@ impl Peer {
ok_header.in_re_verb, ok_header.in_re_verb,
in_re_message_id, in_re_message_id,
payload, payload,
&mut cursor, cursor,
); );
} }
} }

View file

@ -10,6 +10,7 @@ pub trait SwitchInterface: Sync + Send {}
pub struct Switch {} pub struct Switch {}
#[allow(unused_variables)]
impl InnerProtocol for Switch { impl InnerProtocol for Switch {
fn handle_packet<HostSystemImpl: HostSystem + ?Sized>( fn handle_packet<HostSystemImpl: HostSystem + ?Sized>(
&self, &self,
@ -21,6 +22,7 @@ impl InnerProtocol for Switch {
message_id: u64, message_id: u64,
verb: u8, verb: u8,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }
@ -37,7 +39,7 @@ impl InnerProtocol for Switch {
in_re_message_id: u64, in_re_message_id: u64,
error_code: u8, error_code: u8,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: &mut usize, cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }
@ -53,7 +55,7 @@ impl InnerProtocol for Switch {
in_re_verb: u8, in_re_verb: u8,
in_re_message_id: u64, in_re_message_id: u64,
payload: &PacketBuffer, payload: &PacketBuffer,
cursor: &mut usize, cursor: usize,
) -> PacketHandlerResult { ) -> PacketHandlerResult {
PacketHandlerResult::NotHandled PacketHandlerResult::NotHandled
} }