diff options
| author | Odd Stranne <odd@mullvad.net> | 2020-01-31 19:06:49 +0100 |
|---|---|---|
| committer | Odd Stranne <odd@mullvad.net> | 2020-02-03 13:42:46 +0100 |
| commit | b0c0b86acd7b147a1dfcbee71e4d00dcb22ea711 (patch) | |
| tree | 773b228b81dc23d303140ef4e72ad4008a70621b /windows | |
| parent | 33b61325f9c025cf73e24be9f99c8ed5d5e9789e (diff) | |
| download | mullvadvpn-b0c0b86acd7b147a1dfcbee71e4d00dcb22ea711.tar.xz mullvadvpn-b0c0b86acd7b147a1dfcbee71e4d00dcb22ea711.zip | |
Fix calls to FormatIpv4
Diffstat (limited to 'windows')
| -rw-r--r-- | windows/winnet/src/winnet/routing/routemanager.cpp | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/windows/winnet/src/winnet/routing/routemanager.cpp b/windows/winnet/src/winnet/routing/routemanager.cpp index 8a57a1e088..81ee4e3d96 100644 --- a/windows/winnet/src/winnet/routing/routemanager.cpp +++ b/windows/winnet/src/winnet/routing/routemanager.cpp @@ -162,29 +162,19 @@ InterfaceAndGateway ResolveNode(ADDRESS_FAMILY family, const std::optional<Node> return InterfaceAndGateway{ InterfaceLuidFromGateway(node.gateway().value()), node.gateway().value() }; } -// TODO: Move to libcommon -uint32_t ByteSwap(uint32_t val) -{ - return - ( - ((val & 0xFF) << 24) | - ((val & 0xFF00) << 8) | - ((val & 0xFF0000) >> 8) | - ((val & 0xFF000000) >> 24) - ); -} - std::wstring FormatNetwork(const Network &network) { + using namespace common::string; + switch (network.Prefix.si_family) { case AF_INET: { - return common::string::FormatIpv4(ByteSwap(network.Prefix.Ipv4.sin_addr.s_addr), network.PrefixLength); + return FormatIpv4<AddressOrder::NetworkByteOrder>(network.Prefix.Ipv4.sin_addr.s_addr, network.PrefixLength); } case AF_INET6: { - return common::string::FormatIpv6(network.Prefix.Ipv6.sin6_addr.u.Byte, network.PrefixLength); + return FormatIpv6(network.Prefix.Ipv6.sin6_addr.u.Byte, network.PrefixLength); } default: { @@ -491,10 +481,7 @@ void RouteManager::undoEvents(const std::vector<EventEntry> &eventLog) // static std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route) { - // - // TODO: Fix broken IP formatting - // Update FormatIpv4 function with an additional argument to specify network/host byte order. - // + using namespace common::string; std::wstringstream ss; @@ -504,10 +491,10 @@ std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route) if (0 != route.nextHop.Ipv4.sin_addr.s_addr) { - gateway = common::string::FormatIpv4(ByteSwap(route.nextHop.Ipv4.sin_addr.s_addr)); + gateway = FormatIpv4<AddressOrder::NetworkByteOrder>(route.nextHop.Ipv4.sin_addr.s_addr); } - ss << common::string::FormatIpv4(ByteSwap(route.network.Prefix.Ipv4.sin_addr.s_addr), route.network.PrefixLength) + ss << FormatIpv4<AddressOrder::NetworkByteOrder>(route.network.Prefix.Ipv4.sin_addr.s_addr, route.network.PrefixLength) << L" with gateway " << gateway << L" on interface with LUID 0x" << std::hex << route.luid.Value; } @@ -520,10 +507,10 @@ std::wstring RouteManager::FormatRegisteredRoute(const RegisteredRoute &route) if (0 != std::accumulate(begin, end, 0)) { - gateway = common::string::FormatIpv6(route.nextHop.Ipv6.sin6_addr.u.Byte); + gateway = FormatIpv6(route.nextHop.Ipv6.sin6_addr.u.Byte); } - ss << common::string::FormatIpv6(route.network.Prefix.Ipv6.sin6_addr.u.Byte, route.network.PrefixLength) + ss << FormatIpv6(route.network.Prefix.Ipv6.sin6_addr.u.Byte, route.network.PrefixLength) << L" with gateway " << gateway << L" on interface with LUID 0x" << std::hex << route.luid.Value; } |
