Fix IPv4/UInt32 calculations
This commit is contained in:
parent
81a47832c1
commit
9c989dabf5
|
@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
- Use high-level accessories instead of `debugLogKey` and `lastErrorKey`. [#45](https://github.com/keeshux/tunnelkit/pull/45)
|
||||
|
||||
### Fixed
|
||||
|
||||
- IPv4/UInt32 calculations were wrong.
|
||||
|
||||
## 1.2.2 (2018-10-25)
|
||||
|
||||
### Changed
|
||||
|
|
|
@ -96,10 +96,10 @@ public class DNSResolver {
|
|||
}
|
||||
|
||||
public static func string(fromIPv4 ipv4: UInt32) -> String {
|
||||
let a = UInt8(ipv4 & UInt32(0xff))
|
||||
let b = UInt8((ipv4 >> 8) & UInt32(0xff))
|
||||
let c = UInt8((ipv4 >> 16) & UInt32(0xff))
|
||||
let d = UInt8((ipv4 >> 24) & UInt32(0xff))
|
||||
let a = UInt8((ipv4 >> 24) & UInt32(0xff))
|
||||
let b = UInt8((ipv4 >> 16) & UInt32(0xff))
|
||||
let c = UInt8((ipv4 >> 8) & UInt32(0xff))
|
||||
let d = UInt8(ipv4 & UInt32(0xff))
|
||||
|
||||
return "\(a).\(b).\(c).\(d)"
|
||||
}
|
||||
|
@ -110,13 +110,13 @@ public class DNSResolver {
|
|||
return nil
|
||||
}
|
||||
var ipv4: UInt32 = 0
|
||||
var bits: UInt32 = 0
|
||||
var bits: UInt32 = 32
|
||||
comps.forEach {
|
||||
guard let octet = UInt32($0), octet <= 255 else {
|
||||
return
|
||||
}
|
||||
bits -= 8
|
||||
ipv4 |= octet << bits
|
||||
bits += 8
|
||||
}
|
||||
return ipv4
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ class DNSTests: XCTestCase {
|
|||
|
||||
func testIPv4() {
|
||||
let addr = "1.2.3.4"
|
||||
let ip: UInt32 = 0x04030201
|
||||
let ip: UInt32 = 0x01020304
|
||||
|
||||
XCTAssertEqual(DNSResolver.ipv4(fromString: addr), ip)
|
||||
XCTAssertEqual(DNSResolver.string(fromIPv4: ip), addr)
|
||||
|
|
Loading…
Reference in New Issue