Skip to content

Commit 8b5f0f7

Browse files
committed
Bump netlink-packet-utils to v0.6.0
Signed-off-by: Quentin Monnet <[email protected]>
1 parent 91e71b6 commit 8b5f0f7

File tree

5 files changed

+30
-24
lines changed

5 files changed

+30
-24
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ description = "netlink packet types"
1414
[dependencies]
1515
anyhow = "1.0.31"
1616
byteorder = "1.3.2"
17-
netlink-packet-utils = "0.5.2"
17+
netlink-packet-utils = "0.6.0"
1818

1919
[dev-dependencies]
2020
netlink-packet-route = "0.13.0"

src/done.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,12 @@ impl Emitable for DoneMessage {
9797
}
9898
}
9999

100-
impl<'buffer, T: AsRef<[u8]> + 'buffer> Parseable<DoneBuffer<&'buffer T>>
100+
impl<T: AsRef<[u8]>> Parseable<DoneBuffer<&T>>
101101
for DoneMessage
102102
{
103-
fn parse(buf: &DoneBuffer<&'buffer T>) -> Result<DoneMessage, DecodeError> {
103+
type Error = DecodeError;
104+
105+
fn parse(buf: &DoneBuffer<&T>) -> Result<DoneMessage, Self::Error> {
104106
Ok(DoneMessage {
105107
code: buf.code(),
106108
extended_ack: buf.extended_ack().to_vec(),

src/error.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,14 @@ impl Emitable for ErrorMessage {
115115
}
116116
}
117117

118-
impl<'buffer, T: AsRef<[u8]> + 'buffer> Parseable<ErrorBuffer<&'buffer T>>
118+
impl<T: AsRef<[u8]>> Parseable<ErrorBuffer<&T>>
119119
for ErrorMessage
120120
{
121+
type Error = DecodeError;
122+
121123
fn parse(
122-
buf: &ErrorBuffer<&'buffer T>,
123-
) -> Result<ErrorMessage, DecodeError> {
124+
buf: &ErrorBuffer<&T>,
125+
) -> Result<ErrorMessage, Self::Error> {
124126
// FIXME: The payload of an error is basically a truncated packet, which
125127
// requires custom logic to parse correctly. For now we just
126128
// return it as a Vec<u8> let header: NetlinkHeader = {

src/header.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,12 @@ impl Emitable for NetlinkHeader {
5454
}
5555
}
5656

57-
impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NetlinkBuffer<&'a T>>
57+
impl<T: AsRef<[u8]> + ?Sized> Parseable<NetlinkBuffer<&T>>
5858
for NetlinkHeader
5959
{
60-
fn parse(buf: &NetlinkBuffer<&'a T>) -> Result<NetlinkHeader, DecodeError> {
60+
type Error = DecodeError;
61+
62+
fn parse(buf: &NetlinkBuffer<&T>) -> Result<NetlinkHeader, Self::Error> {
6163
Ok(NetlinkHeader {
6264
length: buf.length(),
6365
message_type: buf.message_type(),

src/message.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
use std::fmt::Debug;
44

5-
use anyhow::Context;
65
use netlink_packet_utils::DecodeError;
76

87
use crate::{
@@ -83,40 +82,41 @@ where
8382
}
8483
}
8584

86-
impl<'buffer, B, I> Parseable<NetlinkBuffer<&'buffer B>> for NetlinkMessage<I>
85+
impl<B, I> Parseable<NetlinkBuffer<&B>> for NetlinkMessage<I>
8786
where
88-
B: AsRef<[u8]> + 'buffer,
87+
B: AsRef<[u8]>,
8988
I: NetlinkDeserializable,
9089
{
91-
fn parse(buf: &NetlinkBuffer<&'buffer B>) -> Result<Self, DecodeError> {
90+
type Error = DecodeError;
91+
92+
fn parse(buf: &NetlinkBuffer<&B>) -> Result<Self, Self::Error> {
9293
use self::NetlinkPayload::*;
9394

9495
let header =
95-
<NetlinkHeader as Parseable<NetlinkBuffer<&'buffer B>>>::parse(buf)
96-
.context("failed to parse netlink header")?;
96+
<NetlinkHeader as Parseable<NetlinkBuffer<&B>>>::parse(buf)?;
9797

9898
let bytes = buf.payload();
9999
let payload = match header.message_type {
100100
NLMSG_ERROR => {
101101
let msg = ErrorBuffer::new_checked(&bytes)
102-
.and_then(|buf| ErrorMessage::parse(&buf))
103-
.context("failed to parse NLMSG_ERROR")?;
102+
.and_then(|buf| ErrorMessage::parse(&buf))?;
104103
Error(msg)
105104
}
106105
NLMSG_NOOP => Noop,
107106
NLMSG_DONE => {
108107
let msg = DoneBuffer::new_checked(&bytes)
109-
.and_then(|buf| DoneMessage::parse(&buf))
110-
.context("failed to parse NLMSG_DONE")?;
108+
.and_then(|buf| DoneMessage::parse(&buf))?;
111109
Done(msg)
112110
}
113111
NLMSG_OVERRUN => Overrun(bytes.to_vec()),
114-
message_type => {
115-
let inner_msg = I::deserialize(&header, bytes).context(
116-
format!("Failed to parse message with type {message_type}"),
117-
)?;
118-
InnerMessage(inner_msg)
119-
}
112+
message_type => match I::deserialize(&header, bytes) {
113+
Err(e) => {
114+
return Err(DecodeError::Other(
115+
format!("Failed to parse message with type {message_type}: {e}").into()),
116+
);
117+
}
118+
Ok(inner_msg) => InnerMessage(inner_msg),
119+
},
120120
};
121121
Ok(NetlinkMessage { header, payload })
122122
}

0 commit comments

Comments
 (0)