mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-22 09:21:57 -05:00
ntpquery: Use AK::convert_between_host_and_network_endian
Instead of polluting global namespace with definitions from libkern/OSByteOrder.h and machine/endian.h on MacOS, just use AK functions for conversions.
This commit is contained in:
parent
6b08b43a1e
commit
677bcea771
2 changed files with 9 additions and 31 deletions
24
AK/Endian.h
24
AK/Endian.h
|
@ -10,30 +10,6 @@
|
||||||
#include <AK/Forward.h>
|
#include <AK/Forward.h>
|
||||||
#include <AK/Platform.h>
|
#include <AK/Platform.h>
|
||||||
|
|
||||||
#if defined(AK_OS_MACOS)
|
|
||||||
# include <libkern/OSByteOrder.h>
|
|
||||||
# include <machine/endian.h>
|
|
||||||
|
|
||||||
# define htobe16(x) OSSwapHostToBigInt16(x)
|
|
||||||
# define htole16(x) OSSwapHostToLittleInt16(x)
|
|
||||||
# define be16toh(x) OSSwapBigToHostInt16(x)
|
|
||||||
# define le16toh(x) OSSwapLittleToHostInt16(x)
|
|
||||||
|
|
||||||
# define htobe32(x) OSSwapHostToBigInt32(x)
|
|
||||||
# define htole32(x) OSSwapHostToLittleInt32(x)
|
|
||||||
# define be32toh(x) OSSwapBigToHostInt32(x)
|
|
||||||
# define le32toh(x) OSSwapLittleToHostInt32(x)
|
|
||||||
|
|
||||||
# define htobe64(x) OSSwapHostToBigInt64(x)
|
|
||||||
# define htole64(x) OSSwapHostToLittleInt64(x)
|
|
||||||
# define be64toh(x) OSSwapBigToHostInt64(x)
|
|
||||||
# define le64toh(x) OSSwapLittleToHostInt64(x)
|
|
||||||
|
|
||||||
# define __BIG_ENDIAN BIG_ENDIAN
|
|
||||||
# define __LITTLE_ENDIAN LITTLE_ENDIAN
|
|
||||||
# define __BYTE_ORDER BYTE_ORDER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace AK {
|
namespace AK {
|
||||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||||
inline constexpr static bool HostIsLittleEndian = true;
|
inline constexpr static bool HostIsLittleEndian = true;
|
||||||
|
|
|
@ -29,6 +29,8 @@
|
||||||
// The fractional part in the lower 32 bits stores fractional bits times 2 ** 32.
|
// The fractional part in the lower 32 bits stores fractional bits times 2 ** 32.
|
||||||
using NtpTimestamp = uint64_t;
|
using NtpTimestamp = uint64_t;
|
||||||
|
|
||||||
|
using AK::convert_between_host_and_network_endian;
|
||||||
|
|
||||||
struct [[gnu::packed]] NtpPacket {
|
struct [[gnu::packed]] NtpPacket {
|
||||||
uint8_t li_vn_mode;
|
uint8_t li_vn_mode;
|
||||||
uint8_t stratum;
|
uint8_t stratum;
|
||||||
|
@ -161,7 +163,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
sockaddr_in peer_address;
|
sockaddr_in peer_address;
|
||||||
memset(&peer_address, 0, sizeof(peer_address));
|
memset(&peer_address, 0, sizeof(peer_address));
|
||||||
peer_address.sin_family = AF_INET;
|
peer_address.sin_family = AF_INET;
|
||||||
peer_address.sin_port = htons(123);
|
peer_address.sin_port = convert_between_host_and_network_endian<short>(123);
|
||||||
peer_address.sin_addr.s_addr = *(in_addr_t const*)hostent->h_addr_list[0];
|
peer_address.sin_addr.s_addr = *(in_addr_t const*)hostent->h_addr_list[0];
|
||||||
|
|
||||||
NtpPacket packet;
|
NtpPacket packet;
|
||||||
|
@ -242,8 +244,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
}
|
}
|
||||||
|
|
||||||
NtpTimestamp origin_timestamp = ntp_timestamp_from_timeval(local_transmit_time);
|
NtpTimestamp origin_timestamp = ntp_timestamp_from_timeval(local_transmit_time);
|
||||||
NtpTimestamp receive_timestamp = be64toh(packet.receive_timestamp);
|
NtpTimestamp receive_timestamp = convert_between_host_and_network_endian(packet.receive_timestamp);
|
||||||
NtpTimestamp transmit_timestamp = be64toh(packet.transmit_timestamp);
|
NtpTimestamp transmit_timestamp = convert_between_host_and_network_endian(packet.transmit_timestamp);
|
||||||
#ifdef SO_TIMESTAMP
|
#ifdef SO_TIMESTAMP
|
||||||
NtpTimestamp destination_timestamp = ntp_timestamp_from_timeval(kernel_receive_time);
|
NtpTimestamp destination_timestamp = ntp_timestamp_from_timeval(kernel_receive_time);
|
||||||
|
|
||||||
|
@ -270,17 +272,17 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
outln("Stratum: {}", packet.stratum);
|
outln("Stratum: {}", packet.stratum);
|
||||||
outln("Poll: {}", packet.stratum);
|
outln("Poll: {}", packet.stratum);
|
||||||
outln("Precision: {}", packet.precision);
|
outln("Precision: {}", packet.precision);
|
||||||
outln("Root delay: {:x}", ntohl(packet.root_delay));
|
outln("Root delay: {:x}", convert_between_host_and_network_endian(packet.root_delay));
|
||||||
outln("Root dispersion: {:x}", ntohl(packet.root_dispersion));
|
outln("Root dispersion: {:x}", convert_between_host_and_network_endian(packet.root_dispersion));
|
||||||
|
|
||||||
u32 ref_id = ntohl(packet.reference_id);
|
u32 ref_id = convert_between_host_and_network_endian(packet.reference_id);
|
||||||
out("Reference ID: {:x}", ref_id);
|
out("Reference ID: {:x}", ref_id);
|
||||||
if (packet.stratum == 1) {
|
if (packet.stratum == 1) {
|
||||||
out(" ('{:c}{:c}{:c}{:c}')", (ref_id & 0xff000000) >> 24, (ref_id & 0xff0000) >> 16, (ref_id & 0xff00) >> 8, ref_id & 0xff);
|
out(" ('{:c}{:c}{:c}{:c}')", (ref_id & 0xff000000) >> 24, (ref_id & 0xff0000) >> 16, (ref_id & 0xff00) >> 8, ref_id & 0xff);
|
||||||
}
|
}
|
||||||
outln();
|
outln();
|
||||||
|
|
||||||
outln("Reference timestamp: {:#016x} ({})", be64toh(packet.reference_timestamp), format_ntp_timestamp(be64toh(packet.reference_timestamp)).characters());
|
outln("Reference timestamp: {:#016x} ({})", convert_between_host_and_network_endian(packet.reference_timestamp), format_ntp_timestamp(convert_between_host_and_network_endian(packet.reference_timestamp)).characters());
|
||||||
outln("Origin timestamp: {:#016x} ({})", origin_timestamp, format_ntp_timestamp(origin_timestamp).characters());
|
outln("Origin timestamp: {:#016x} ({})", origin_timestamp, format_ntp_timestamp(origin_timestamp).characters());
|
||||||
outln("Receive timestamp: {:#016x} ({})", receive_timestamp, format_ntp_timestamp(receive_timestamp).characters());
|
outln("Receive timestamp: {:#016x} ({})", receive_timestamp, format_ntp_timestamp(receive_timestamp).characters());
|
||||||
outln("Transmit timestamp: {:#016x} ({})", transmit_timestamp, format_ntp_timestamp(transmit_timestamp).characters());
|
outln("Transmit timestamp: {:#016x} ({})", transmit_timestamp, format_ntp_timestamp(transmit_timestamp).characters());
|
||||||
|
|
Loading…
Reference in a new issue