From c5f33ba0f0003a55d3aa9252bf688161608f9f4e Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Mon, 31 Jan 2000 21:52:17 +0000 Subject: [PATCH] added isc_sockaddr_getport --- lib/isc/include/isc/sockaddr.h | 6 ++++++ lib/isc/sockaddr.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/isc/include/isc/sockaddr.h b/lib/isc/include/isc/sockaddr.h index 6e5a896b28..838dc46b24 100644 --- a/lib/isc/include/isc/sockaddr.h +++ b/lib/isc/include/isc/sockaddr.h @@ -83,6 +83,12 @@ isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port); * Set the port of 'sockaddr' to 'port'. */ +in_port_t +isc_sockaddr_getport(isc_sockaddr_t *sockaddr); +/* + * Get the port stored in 'sockaddr'. + */ + isc_result_t isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target); /* diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index e8ad07d2dc..feb00d3bbf 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -337,3 +337,21 @@ isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port) { FATAL_ERROR(__FILE__, __LINE__, "unknown address family"); } } + +in_port_t +isc_sockaddr_getport(isc_sockaddr_t *sockaddr) { + in_port_t port = 0; + + switch (sockaddr->type.sa.sa_family) { + case AF_INET: + port = ntohs(sockaddr->type.sin.sin_port); + break; + case AF_INET6: + port = ntohs(sockaddr->type.sin6.sin6_port); + break; + default: + FATAL_ERROR(__FILE__, __LINE__, "unknown address family"); + } + + return (port); +}