net/SocketAddress: add method GetPort()

This commit is contained in:
Max Kellermann
2017-05-17 09:28:12 +02:00
parent 907fb257cd
commit 77c747a8fd
2 changed files with 42 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2012-2015 Max Kellermann <max.kellermann@gmail.com>
* Copyright (C) 2012-2017 Max Kellermann <max.kellermann@gmail.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,12 +27,43 @@
* OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "SocketAddress.hxx"
#include <string.h>
#ifdef HAVE_TCP
#ifdef WIN32
#include <ws2tcpip.h>
#else
#include <netinet/in.h>
#endif
#endif
bool
SocketAddress::operator==(SocketAddress other) const noexcept
{
return size == other.size && memcmp(address, other.address, size) == 0;
}
#ifdef HAVE_TCP
unsigned
SocketAddress::GetPort() const
{
if (IsNull())
return 0;
switch (GetFamily()) {
case AF_INET:
return ntohs(((const struct sockaddr_in *)(const void *)address)->sin_port);
case AF_INET6:
return ntohs(((const struct sockaddr_in6 *)(const void *)address)->sin6_port);
default:
return 0;
}
}
#endif