Skip to content

Commit 01e8dd1

Browse files
qmonnetcathay4t
authored andcommitted
Bump netlink-packet-utils to v0.6.0
Signed-off-by: Quentin Monnet <[email protected]>
1 parent 91e71b6 commit 01e8dd1

File tree

5 files changed

+29
-31
lines changed

5 files changed

+29
-31
lines changed

Cargo.toml

+1-1
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

+4-4
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ impl Emitable for DoneMessage {
9797
}
9898
}
9999

100-
impl<'buffer, T: AsRef<[u8]> + 'buffer> Parseable<DoneBuffer<&'buffer T>>
101-
for DoneMessage
102-
{
103-
fn parse(buf: &DoneBuffer<&'buffer T>) -> Result<DoneMessage, DecodeError> {
100+
impl<T: AsRef<[u8]>> Parseable<DoneBuffer<&T>> for DoneMessage {
101+
type Error = DecodeError;
102+
103+
fn parse(buf: &DoneBuffer<&T>) -> Result<DoneMessage, Self::Error> {
104104
Ok(DoneMessage {
105105
code: buf.code(),
106106
extended_ack: buf.extended_ack().to_vec(),

src/error.rs

+4-6
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,10 @@ impl Emitable for ErrorMessage {
115115
}
116116
}
117117

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

src/header.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ impl Emitable for NetlinkHeader {
5454
}
5555
}
5656

57-
impl<'a, T: AsRef<[u8]> + ?Sized> Parseable<NetlinkBuffer<&'a T>>
58-
for NetlinkHeader
59-
{
60-
fn parse(buf: &NetlinkBuffer<&'a T>) -> Result<NetlinkHeader, DecodeError> {
57+
impl<T: AsRef<[u8]> + ?Sized> Parseable<NetlinkBuffer<&T>> for NetlinkHeader {
58+
type Error = DecodeError;
59+
60+
fn parse(buf: &NetlinkBuffer<&T>) -> Result<NetlinkHeader, Self::Error> {
6161
Ok(NetlinkHeader {
6262
length: buf.length(),
6363
message_type: buf.message_type(),

src/message.rs

+16-16
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)