net/AllocatedSocketAddress: add method SetPort()
This commit is contained in:
@@ -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
|
||||
@@ -36,6 +36,14 @@
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TCP
|
||||
#ifdef WIN32
|
||||
#include <ws2tcpip.h>
|
||||
#else
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
AllocatedSocketAddress &
|
||||
AllocatedSocketAddress::operator=(SocketAddress src)
|
||||
{
|
||||
@@ -82,3 +90,32 @@ AllocatedSocketAddress::SetLocal(const char *path) noexcept
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TCP
|
||||
|
||||
bool
|
||||
AllocatedSocketAddress::SetPort(unsigned port) noexcept
|
||||
{
|
||||
if (IsNull())
|
||||
return false;
|
||||
|
||||
switch (GetFamily()) {
|
||||
case AF_INET:
|
||||
{
|
||||
auto *a = (struct sockaddr_in *)(void *)address;
|
||||
a->sin_port = htons(port);
|
||||
return true;
|
||||
}
|
||||
|
||||
case AF_INET6:
|
||||
{
|
||||
auto *a = (struct sockaddr_in6 *)(void *)address;
|
||||
a->sin6_port = htons(port);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user