From 8d08d3c8e2c721c0baa28e35b8c5492a3534cb79 Mon Sep 17 00:00:00 2001 From: Marvin Gudel Date: Thu, 20 Nov 2025 14:37:40 +0100 Subject: [PATCH 1/2] Provide destination EID to transport binding Signed-off-by: Marvin Gudel --- src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index f10bcfa..efd5784 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -221,7 +221,7 @@ impl Some(cookie), )?; - self.sender.send_vectored(frag, bufs) + self.sender.send_vectored(eid, frag, bufs) } /// Receive a message associated with a [`AppCookie`] @@ -326,7 +326,8 @@ impl /// Implemented by a transport binding for sending packets. pub trait Sender { /// Send a packet fragmented by `fragmenter` with the payload `payload` - fn send_vectored(&mut self, fragmenter: Fragmenter, payload: &[&[u8]]) -> Result; + fn send_vectored(&mut self, eid: Eid, fragmenter: Fragmenter, payload: &[&[u8]]) + -> Result; /// Get the MTU of a MCTP packet fragment (without transport headers) fn get_mtu(&self) -> usize; } @@ -345,6 +346,7 @@ mod test { impl Sender for DoNothingSender { fn send_vectored( &mut self, + _eid: Eid, fragmenter: mctp_estack::fragment::Fragmenter, payload: &[&[u8]], ) -> core::result::Result { @@ -364,6 +366,7 @@ mod test { impl Sender for BufferSender<'_, MTU> { fn send_vectored( &mut self, + _eid: Eid, mut fragmenter: mctp_estack::fragment::Fragmenter, payload: &[&[u8]], ) -> core::result::Result { From 31e2bc89f6adae3417baf1cf05aaa8623d34c392 Mon Sep 17 00:00:00 2001 From: Marvin Gudel Date: Thu, 20 Nov 2025 14:38:20 +0100 Subject: [PATCH 2/2] Don't drop messages with physical addressing Signed-off-by: Marvin Gudel --- src/lib.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index efd5784..b0de499 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -100,8 +100,10 @@ impl return Ok(()); }; - if msg.dest != own_eid { - // Drop messages if eid does not match (for now) + if msg.dest != own_eid && msg.dest != Eid(0) { + // Drop messages if eid does not match (for now). + // EID 0 messages are used for physical addressing + // and will thus be processed. return Ok(()); }