Skip to content

Commit c794b21

Browse files
committed
Unify in_addr convertion tests
1 parent ec0ac6a commit c794b21

File tree

2 files changed

+36
-26
lines changed

2 files changed

+36
-26
lines changed

src/sys/unix.rs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -721,14 +721,14 @@ pub(crate) fn from_in_addr(in_addr: in_addr) -> Ipv4Addr {
721721
Ipv4Addr::from(in_addr.s_addr.to_ne_bytes())
722722
}
723723

724-
pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> libc::in6_addr {
725-
let mut ret: libc::in6_addr = unsafe { mem::zeroed() };
724+
pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr {
725+
let mut ret: in6_addr = unsafe { mem::zeroed() };
726726
ret.s6_addr = addr.octets();
727727
return ret;
728728
}
729729

730-
pub(crate) fn from_in6_addr(in6_addr: in6_addr) -> Ipv6Addr {
731-
Ipv6Addr::from(in6_addr.s6_addr)
730+
pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr {
731+
Ipv6Addr::from(addr.s6_addr)
732732
}
733733

734734
/// Unix only API.
@@ -1049,12 +1049,23 @@ from!(crate::Socket, UnixListener);
10491049
from!(crate::Socket, UnixDatagram);
10501050

10511051
#[test]
1052-
fn test_ip() {
1052+
fn in_addr_convertion() {
10531053
let ip = Ipv4Addr::new(127, 0, 0, 1);
1054-
assert_eq!(ip, from_in_addr(to_in_addr(&ip)));
1054+
let raw = to_in_addr(&ip);
1055+
assert_eq!(raw.s_addr, 127 << 0 | 1 << 24);
1056+
assert_eq!(from_in_addr(raw), ip);
10551057

10561058
let ip = Ipv4Addr::new(127, 34, 4, 12);
1057-
let want = 127 << 0 | 34 << 8 | 4 << 16 | 12 << 24;
1058-
assert_eq!(to_in_addr(&ip).s_addr, want);
1059-
assert_eq!(from_in_addr(in_addr { s_addr: want }), ip);
1059+
let raw = to_in_addr(&ip);
1060+
assert_eq!(raw.s_addr, 127 << 0 | 34 << 8 | 4 << 16 | 12 << 24);
1061+
assert_eq!(from_in_addr(raw), ip);
1062+
}
1063+
1064+
#[test]
1065+
fn in6_addr_convertion() {
1066+
let ip = Ipv6Addr::new(0x2000, 1, 2, 3, 4, 5, 6, 7);
1067+
let raw = to_in6_addr(&ip);
1068+
let want = [32, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7];
1069+
assert_eq!(raw.s6_addr, want);
1070+
assert_eq!(from_in6_addr(raw), ip);
10601071
}

src/sys/windows.rs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -632,8 +632,8 @@ pub(crate) fn to_in6_addr(addr: &Ipv6Addr) -> in6_addr {
632632
ret
633633
}
634634

635-
pub(crate) fn from_in6_addr(in6_addr: in6_addr) -> Ipv6Addr {
636-
Ipv6Addr::from(*unsafe { in6_addr.u.Byte() })
635+
pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr {
636+
Ipv6Addr::from(*unsafe { addr.u.Byte() })
637637
}
638638

639639
/// Windows only API.
@@ -686,24 +686,25 @@ impl FromRawSocket for crate::Socket {
686686
}
687687

688688
#[test]
689-
fn test_ipv4() {
689+
fn in_addr_convertion() {
690690
let ip = Ipv4Addr::new(127, 0, 0, 1);
691-
assert_eq!(ip, from_in_addr(to_in_addr(&ip)));
691+
let raw = to_in_addr(&ip);
692+
assert_eq!(unsafe { *raw.S_un.S_addr() }, 127 << 0 | 1 << 24);
693+
assert_eq!(from_in_addr(raw), ip);
692694

693695
let ip = Ipv4Addr::new(127, 34, 4, 12);
694-
let want = 127 << 0 | 34 << 8 | 4 << 16 | 12 << 24;
695-
assert_eq!(unsafe { *to_in_addr(&ip).S_un.S_addr() }, want);
696-
let mut addr: in_addr_S_un = unsafe { mem::zeroed() };
697-
unsafe { *(addr.S_addr_mut()) = want };
698-
assert_eq!(from_in_addr(IN_ADDR { S_un: addr }), ip);
696+
let raw = to_in_addr(&ip);
697+
assert_eq!(
698+
unsafe { *raw.S_un.S_addr() },
699+
127 << 0 | 34 << 8 | 4 << 16 | 12 << 24
700+
);
701+
assert_eq!(from_in_addr(raw), ip);
699702
}
700703

701704
#[test]
702-
fn test_ipv6() {
703-
let ip = Ipv6Addr::new(0x2000, 1, 2, 3, 4, 5, 6, 7);
704-
assert_eq!(ip, from_in6_addr(to_in6_addr(&ip)));
705-
705+
fn in6_addr_convertion() {
706706
let ip = Ipv6Addr::new(0x2000, 1, 2, 3, 4, 5, 6, 7);
707+
let raw = to_in6_addr(&ip);
707708
let want = [
708709
0x2000u16.to_be(),
709710
1u16.to_be(),
@@ -714,8 +715,6 @@ fn test_ipv6() {
714715
6u16.to_be(),
715716
7u16.to_be(),
716717
];
717-
assert_eq!(unsafe { *to_in6_addr(&ip).u.Word() }, want);
718-
let mut addr: in6_addr_u = unsafe { mem::zeroed() };
719-
unsafe { *(addr.Word_mut()) = want };
720-
assert_eq!(from_in6_addr(IN6_ADDR { u: addr }), ip);
718+
assert_eq!(unsafe { *raw.u.Word() }, want);
719+
assert_eq!(from_in6_addr(raw), ip);
721720
}

0 commit comments

Comments
 (0)