Skip to content

Instantly share code, notes, and snippets.

@little-dude
Created November 28, 2021 18:44
Show Gist options
  • Save little-dude/001cc15c46d134f10bc9055484661418 to your computer and use it in GitHub Desktop.
Save little-dude/001cc15c46d134f10bc9055484661418 to your computer and use it in GitHub Desktop.
pub fn parse_ip(payload: &[u8]) -> Result<IpAddr, DecodeError> {
match payload.len() {
4 => Ok(Ipv4Addr::new(payload[0], payload[1], payload[2], payload[3]).into()),
16 => Ok(Ipv6Addr::from([
payload[0],
payload[1],
payload[2],
payload[3],
payload[4],
payload[5],
payload[6],
payload[7],
payload[8],
payload[9],
payload[10],
payload[11],
payload[12],
payload[13],
payload[14],
payload[15],
])
.into()),
_ => Err(format!("invalid IPv6 address: {:?}", payload).into()),
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment