aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-11-13 14:04:58 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-11-13 14:04:58 +0100
commit0ea1e08fa5b9ac52339d1c35a2995a00fdcf4413 (patch)
tree77a121623ab6e33f32ca3f479b082c8b0335b811
parent6ce9838181f067803007347ffe5f16d91718731c (diff)
tidy errors
Includes removal of unused error variants as well as better messages.
-rw-r--r--src/error.rs32
-rw-r--r--src/main.rs4
-rw-r--r--src/util.rs2
3 files changed, 17 insertions, 21 deletions
diff --git a/src/error.rs b/src/error.rs
index d67a9fd..348fb47 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,4 +1,4 @@
-use std::{ffi, io, net, time};
+use std::{io, net, time};
use tokio::sync::watch;
@@ -8,35 +8,31 @@ use thiserror::Error;
pub enum Error {
#[error("lease has been obtained but doesn't exist")]
LeaseNotFound,
- #[error("no client duid")]
+ #[error("server did not include a client id option")]
NoClientId,
- #[error("no hexdump data")]
+ #[error("can't hexdump empty slice")]
NoData,
- #[error("no domain name servers")]
+ #[error("server did not include a domain name servers option")]
NoDns,
- #[error("no ia_pd")]
+ #[error("server did not include an ia_pd option")]
NoIAPD,
- #[error("no ia_pd status code")]
- NoIAPDStatus,
- #[error("no ia_prefix")]
+ #[error("server did not include an ia_prefix option in the ia_pd option")]
NoIAPrefix,
- #[error("no server duid")]
+ #[error("server did not include a server id option")]
NoServerId,
- #[error("incomplete transmission")]
- PartialSend,
- #[error("too few domain name servers (got {0}, need at least 2)")]
+ #[error("unable to send full packet (expected {0}, got {1})")]
+ PartialSend(usize, usize),
+ #[error("too few domain name servers (expected at least 2, got {0})")]
TooFewDns(usize),
- #[error("received packet with wrong client duid (got {0}, want {1})")]
+ #[error("received packet with wrong client duid (expected {0}, got {1})")]
WrongClientId(String, String),
- #[error("received packet with wrong server duid (got {0}, want {1})")]
+ #[error("received packet with wrong server duid (expected {0}, got {1})")]
WrongServerId(String, String),
- #[error("parse address: {0}")]
+ #[error("can't parse network address: {0}")]
AddrParse(#[from] net::AddrParseError),
- #[error("io: {0}")]
+ #[error("io error: {0}")]
Io(#[from] io::Error),
- #[error("nul: {0}")]
- Nul(#[from] ffi::NulError),
#[error("system time monotonicity error: {0}")]
SystemTime(#[from] time::SystemTimeError),
diff --git a/src/main.rs b/src/main.rs
index 1786ff7..ba4ad0e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -231,8 +231,8 @@ fn handle(dhcp6: &mut Dhcp6, dhcp6c: &mut Dhcp6c, buf: &[u8]) -> Result<()> {
if client_id != dhcp6.duid.as_ref() {
return Err(Error::WrongClientId(
- hexdump(client_id)?,
hexdump(dhcp6.duid.as_ref())?,
+ hexdump(client_id)?,
));
}
@@ -240,8 +240,8 @@ fn handle(dhcp6: &mut Dhcp6, dhcp6c: &mut Dhcp6c, buf: &[u8]) -> Result<()> {
dhcp6.server_id = server_id.to_vec();
} else if server_id != &dhcp6.server_id {
return Err(Error::WrongServerId(
- hexdump(server_id)?,
hexdump(&dhcp6.server_id)?,
+ hexdump(server_id)?,
));
}
diff --git a/src/util.rs b/src/util.rs
index 280466a..e226ca6 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -32,7 +32,7 @@ pub async fn send_to_exact<A: ToSocketAddrs>(
) -> Result<()> {
let n = sock.send_to(buf, target).await?;
if n != buf.len() {
- Err(Error::PartialSend)
+ Err(Error::PartialSend(buf.len(), n))
} else {
Ok(())
}