diff options
author | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2020-10-12 03:04:00 +0000 |
commit | 0ce40abb18ec02ec6fd6bcc5f21612c88daa7578 (patch) | |
tree | 416289fe1448873fd8ca33051f50ad85bffa8aaa /support/dktools/dk4sock04.ctr | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4sock04.ctr')
-rw-r--r-- | support/dktools/dk4sock04.ctr | 436 |
1 files changed, 0 insertions, 436 deletions
diff --git a/support/dktools/dk4sock04.ctr b/support/dktools/dk4sock04.ctr deleted file mode 100644 index 3d4a920e89..0000000000 --- a/support/dktools/dk4sock04.ctr +++ /dev/null @@ -1,436 +0,0 @@ -%% options -copyright owner = Dirk Krause -copyright year = 2017-xxxx -SPDX-License-Identifier: BSD-3-Clause - - -%% module - -#include "dk4conf.h" -#include "dk4sock.h" -#include "dk4mem.h" -#include "dk4strw.h" -#include "dk4strd.h" -#include "dk4maowd.h" -#include "dk4maowh.h" -#include "dk4rec23.h" - -#include "dk4unused.h" - -#if DK4_HAVE_ASSERT_H -#ifndef ASSERT_H_INCLUDED -#include <assert.h> -#define ASSERT_H_INCLUDED 1 -#endif -#endif - - -$!trace-include - - -#if DK4_ON_WINDOWS -/** Constant texts used by the module, not localized. -*/ -static const wchar_t * const dk4socket_wc_kw[] = { -$!string-table prefix=L -# -# 0 Separator between port number and address -# -@ -# -# 1 Separator between IPv4 address components -# -. -# -# 2 Separator between IPv6 address components -# -: -$!end -}; -#endif - - - -int -dk4socket_wc_inet_ntop( -#if DK4_ON_WINDOWS - wchar_t *dptr, - size_t dsz, - int afam, - const void *src, -#else - wchar_t * DK4_ARG_UNUSED(dptr), - size_t DK4_ARG_UNUSED(dsz), - int DK4_ARG_UNUSED(afam), - const void * DK4_ARG_UNUSED(src), -#endif - dk4_er_t *erp -) -{ -#if DK4_ON_WINDOWS -#if DK4_HAVE_INET_NTOP - /* +++++ +Windows +inet_ntop */ -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - struct in6_addr in6; -#endif - struct in_addr in4; - int back = DK4_SOCKET_RESULT_FAILED; - -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(NULL != src); - assert(0 < dsz); -#endif - if ((NULL != dptr) && (0 < dsz)) { *dptr = L'\0'; } - if ((NULL != dptr) && (NULL != src) && (0 < dsz)) { - dk4socket_error_reset(); - switch (afam) { - case AF_INET : { - DK4_MEMCPY(&in4, src, sizeof(in4)); - if (NULL != InetNtopW(afam, (void *)(&in4), dptr, dsz)) { - back = DK4_SOCKET_RESULT_SUCCESS; - } else { - dk4socket_error_report(erp, DK4_E_SOCKET_INET_NTOP); - } - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - DK4_MEMCPY(&in6, src, sizeof(in6)); - if (NULL != InetNtopW(afam, (void *)(&in6), dptr, dsz)) { - back = DK4_SOCKET_RESULT_SUCCESS; - } else { - dk4socket_error_report(erp, DK4_E_SOCKET_INET_NTOP); - } - } break; -#endif - default : { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } break; - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; - /* ----- +Windows +inet_ntop */ -#else - /* +++++ +Windows -inet_ntop */ - wchar_t buf[16*sizeof(dk4_um_t)]; - const struct in_addr *inp4; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - const struct in6_addr *inp6; -#endif - unsigned long ul; - unsigned long u1; - int back = DK4_SOCKET_RESULT_FAILED; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - int i; -#endif - int res; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - unsigned short us; -#endif -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(NULL != src); - assert(0 < dsz); -#endif - if ((NULL != dptr) && (0 < dsz)) { *dptr = L'\0'; } - if ((NULL != dptr) && (NULL != src) && (0 < dsz)) { - switch (afam) { - case AF_INET : { - inp4 = (const struct in_addr *)src; - ul = inp4->s_addr; - ul = dk4socket_htonl(ul); - u1 = ((ul >> 24) & 0x000000FFUL); - res = dk4ma_write_wc_decimal_unsigned( - buf, sizeof(buf), (dk4_um_t)u1, 0, erp - ); - if (0 != res) { - if (0 != dk4strw_cpy_s(dptr, dsz, buf, erp)) { - u1 = ((ul >> 16) & 0x000000FFUL); - res = dk4ma_write_wc_decimal_unsigned( - buf, sizeof(buf), (dk4_um_t)u1, 0, erp - ); - if (0 != res) { - if (0 != dk4strw_cat_s(dptr, dsz, dk4socket_wc_kw[1], erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, buf, erp)) { - u1 = ((ul >> 8) & 0x000000FFUL); - res = dk4ma_write_wc_decimal_unsigned( - buf, sizeof(buf), (dk4_um_t)u1, 0, erp - ); - if (0 != res) { - if (0 != dk4strw_cat_s(dptr,dsz,dk4socket_wc_kw[1],erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, buf, erp)) { - u1 = (ul & 0x000000FFUL); - res = dk4ma_write_wc_decimal_unsigned( - buf, sizeof(buf), (dk4_um_t)u1, 0, erp - ); - if (0 != res) { - if ( - 0 != dk4strw_cat_s(dptr,dsz,dk4socket_wc_kw[1],erp) - ) - { - if (0 != dk4strw_cat_s(dptr, dsz, buf, erp)) { - back = DK4_SOCKET_RESULT_SUCCESS; - } - } - } - } - } - } - } - } - } - } - } - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - inp6 = (const struct in6_addr *)src; - back = DK4_SOCKET_RESULT_SUCCESS; - for (i = 0; i < 8; i++) { -#if DK4_ON_WINDOWS - us = inp6->u.Word[i]; -#else - us = inp6->s6_addr16[i]; -#endif - us = dk4socket_htons(us); - res = dk4ma_write_wc_hex_unsigned( - buf, sizeof(buf), (dk4_um_t)us, 0, erp - ); - if (0 != res) { - if (0 == i) { - if (0 == dk4strw_cpy_s(dptr, dsz, buf, erp)) { - back = DK4_SOCKET_RESULT_FAILED; - i = 8; - } - } else { - if (0 != dk4strw_cat_s(dptr, dsz, dk4socket_wc_kw[2], erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, buf, erp)) { - back = DK4_SOCKET_RESULT_FAILED; - i = 8; - } - } else { - back = DK4_SOCKET_RESULT_FAILED; - i = 8; - } - } - } else { - back = DK4_SOCKET_RESULT_FAILED; - i = 8; - } - } - } break; -#endif - default : { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } break; - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; - /* ----- +Windows -inet_ntop */ -#endif -#else - DK4_UNUSED_ARG(dptr) - DK4_UNUSED_ARG(dsz) - DK4_UNUSED_ARG(afam) - DK4_UNUSED_ARG(src) - dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); - return DK4_SOCKET_RESULT_FAILED; -#endif -} - - - -int -dk4socket_wc_addr_port_to_text( -#if DK4_ON_WINDOWS - wchar_t *dptr, - size_t dsz, -#if DK4_HAVE_GETNAMEINFO - int DK4_ARG_UNUSED(afam), -#else - int afam, -#endif - const struct sockaddr *saptr, - size_t sasz, -#else - wchar_t * DK4_ARG_UNUSED(dptr), - size_t DK4_ARG_UNUSED(dsz), - int DK4_ARG_UNUSED(afam), - const struct sockaddr * DK4_ARG_UNUSED(saptr), - size_t DK4_ARG_UNUSED(sasz), -#endif - dk4_er_t *erp -) -{ -#if DK4_ON_WINDOWS -#if DK4_HAVE_GETNAMEINFO - /* +++++ +getnameinfo */ - wchar_t hbuf[64]; - wchar_t pbuf[64]; - const DWORD szh = DK4_SIZEOF(hbuf,wchar_t); - const DWORD szp = DK4_SIZEOF(pbuf,wchar_t); - int back = DK4_SOCKET_RESULT_FAILED; - int res; - DK4_UNUSED_ARG(afam) -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(NULL != saptr); - assert(0 < dsz); - assert(0 < sasz); -#endif - if ((NULL != dptr) && (0 < dsz)) { *dptr = '\0'; } - if ((NULL != dptr) && (NULL != saptr) && (0 < dsz) && (0 < sasz)) { - res = NI_NUMERICHOST | NI_NUMERICSERV; - dk4socket_error_reset(); -#if DK4_HAVE_SOCKLEN_T - res = GetNameInfoW(saptr, (socklen_t)sasz, hbuf, szh, pbuf, szp, res); -#else - res = GetNameInfoW(saptr, sasz, hbuf, szh, pbuf, szp, res); -#endif - if (0 == res) { - if (0 != dk4strw_cpy_s(dptr, dsz, pbuf, erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, dk4socket_wc_kw[0], erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, hbuf, erp)) { - back = DK4_SOCKET_RESULT_SUCCESS; - } - } - } - } else { - dk4error_set_idetails(erp, DK4_E_SOCKET_GETADDRINFO, res); - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; - /* ----- +getnameinfo */ -#else - /* +++++ -getnameinfo */ - wchar_t hbuf[64]; - wchar_t pbuf[64]; - struct sockaddr_in *psoin4; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - struct sockaddr_in6 *psoin6; -#endif - int back = DK4_SOCKET_RESULT_FAILED; - int hpah = 0; - int res; - unsigned short us; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(NULL != saptr); - assert(0 < dsz); - assert(0 < sasz); -#endif - if ((NULL != dptr) && (0 < dsz)) { *dptr = L'\0'; } - if ((NULL != dptr) && (NULL != saptr) && (0 < dsz) && (0 < sasz)) { - switch (afam) { - case AF_INET : { - psoin4 = (struct sockaddr_in *)saptr; - us = psoin4->sin_port; - us = dk4socket_ntohs(us); - res = dk4ma_write_wc_decimal_unsigned( - pbuf, sizeof(pbuf), (dk4_um_t)us, 0, erp - ); - if (0 != res) { - res = dk4socket_wc_inet_ntop( - hbuf, sizeof(hbuf), AF_INET, &(psoin4->sin_addr), erp - ); - if (DK4_SOCKET_RESULT_SUCCESS == res) { - hpah = 1; - } - } - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - psoin6 = (struct sockaddr_in6 *)saptr; - us = psoin6->sin6_port; - us = dk4socket_ntohs(us); - res = dk4ma_write_wc_decimal_unsigned( - pbuf, sizeof(pbuf), (dk4_um_t)us, 0, erp - ); - if (0 != res) { - res = dk4socket_wc_inet_ntop( - hbuf, sizeof(hbuf), AF_INET6, &(psoin6->sin6_addr), erp - ); - if (DK4_SOCKET_RESULT_SUCCESS == res) { - hpah = 1; - } - } - } break; -#endif - default : { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } break; - } - if (0 != hpah) { - if (0 != dk4strw_cpy_s(dptr, dsz, pbuf, erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, dk4socket_wc_kw[0], erp)) { - if (0 != dk4strw_cat_s(dptr, dsz, hbuf, erp)) { - back = DK4_SOCKET_RESULT_SUCCESS; - } - } - } - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; - /* ----- -getnameinfo */ -#endif -#else - DK4_UNUSED_ARG(dptr) - DK4_UNUSED_ARG(dsz) - DK4_UNUSED_ARG(afam) - DK4_UNUSED_ARG(saptr) - DK4_UNUSED_ARG(sasz) - dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); - return DK4_SOCKET_RESULT_FAILED; -#endif -} - - - -int -dk4socket_wc_sockaddr_to_text( - wchar_t *dptr, - size_t dsz, - const dk4_sockaddr_storage_t *saptr, - dk4_er_t *erp -) -{ - const struct sockaddr *soa; - int back = DK4_SOCKET_RESULT_FAILED; -#if DK4_USE_ASSERT - assert(NULL != dptr); - assert(NULL != saptr); - assert(0 < dsz); -#endif - if ((NULL != dptr) && (NULL != saptr) && (0 < dsz)) { - soa = (const struct sockaddr *)saptr; - switch (soa->sa_family) { - case AF_INET : { - back = dk4socket_wc_addr_port_to_text( - dptr, dsz, AF_INET, soa, sizeof(struct sockaddr_in), erp - ); - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - back = dk4socket_wc_addr_port_to_text( - dptr, dsz, AF_INET6, soa, sizeof(struct sockaddr_in6), erp - ); - } break; -#endif - default : { - dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); - } break; - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -} - |