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/dk4sock27.ctr | |
parent | fdb18507cd80dc17f5a5256153d34668b4f4e61c (diff) |
CTAN sync 202010120303
Diffstat (limited to 'support/dktools/dk4sock27.ctr')
-rw-r--r-- | support/dktools/dk4sock27.ctr | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/support/dktools/dk4sock27.ctr b/support/dktools/dk4sock27.ctr deleted file mode 100644 index 125550b154..0000000000 --- a/support/dktools/dk4sock27.ctr +++ /dev/null @@ -1,198 +0,0 @@ -%% options - -copyright owner = Dirk Krause -copyright year = 2015-xxxx -SPDX-License-Identifier: BSD-3-Clause - - - - -%% module - -#include "dk4conf.h" -#include "dk4types.h" -#include "dk4error.h" -#include "dk4mem.h" -#include "dk4sock.h" -#include "dk4str8.h" -#include "dk4strw.h" -#include "dk4mai8dsz.h" -#include "dk4maiwdsz.h" - -#if DK4_HAVE_ASSERT_H -#ifndef ASSERT_H_INCLUDED -#include <assert.h> -#define ASSERT_H_INCLUDED 1 -#endif -#endif - - -$!trace-include - - - -#if DK4_CHAR_SIZE > 1 -#if DK4_ON_WINDOWS - - -static -int -dk4socket_wc_get_allowed_peer( - dk4_allowed_peer_t *peerptr, - const wchar_t *str, - dk4_er_t *erp -) -{ - wchar_t mycp[128]; - IN_ADDR in4; - IN_ADDR ma4; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - IN6_ADDR in6; - IN6_ADDR ma6; -#endif - wchar_t *maptr; - const wchar_t *endptr = NULL; - size_t bitno = 0; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - size_t i = 0; -#endif - unsigned long nm4 = 0UL; - int back = DK4_SOCKET_RESULT_FAILED; - int af = AF_UNSPEC; - int res = 0; -#if DK4_USE_ASSERT - assert(NULL != peerptr); - assert(NULL != str); -#endif - if ((NULL != peerptr) && (NULL != str)) { - if (0 != dk4strw_cpy_s(mycp, DK4_SIZEOF(mycp,wchar_t), str, erp)) { - maptr = dk4strw_chr(mycp, L'/'); - if (NULL != maptr) { *(maptr++) = L'\0'; } - back = dk4socket_wc_inet_pton(&in4, sizeof(in4), AF_INET, mycp, erp); - if (DK4_SOCKET_RESULT_SUCCESS == back) { af = AF_INET; } -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - else { - back = dk4socket_wc_inet_pton(&in6, sizeof(in6), AF_INET6, mycp, erp); - if (DK4_SOCKET_RESULT_SUCCESS == back) { af = AF_INET6; } - } -#endif - if (DK4_SOCKET_RESULT_SUCCESS == back) { - back = DK4_SOCKET_RESULT_FAILED; - if (NULL != maptr) { - res = dk4ma_input_wc_dec_size_t(&bitno, maptr, &endptr, 1, NULL); - if (0 != res) { - /* Bit number - */ - switch (af) { - case AF_INET : { - if (0 != dk4socket_mask_bits(&nm4, bitno, erp)) { - ma4.s_addr = dk4socket_htonl(nm4); - DK4_MEMCPY(&((peerptr->data).ipv4.ad),&in4,sizeof(in4)); - DK4_MEMCPY(&((peerptr->data).ipv4.ma),&ma4,sizeof(ma4)); - peerptr->af = af; - back = DK4_SOCKET_RESULT_SUCCESS; - } - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - back = dk4socket_mask6_bits(&ma6, bitno, erp); - if (DK4_SOCKET_RESULT_SUCCESS == back) { - DK4_MEMCPY(&((peerptr->data).ipv6.ad),&in6,sizeof(in6)); - DK4_MEMCPY(&((peerptr->data).ipv6.ma),&ma6,sizeof(ma6)); - peerptr->af = af; - } - } break; -#endif - default : { - } - } - } else { - /* Mask as address - */ - switch (af) { - case AF_INET : { - back = dk4socket_wc_inet_pton( - &ma4, sizeof(ma4), AF_INET, maptr, erp - ); - if (DK4_SOCKET_RESULT_SUCCESS == back) { - DK4_MEMCPY(&((peerptr->data).ipv4.ad),&in4,sizeof(in4)); - DK4_MEMCPY(&((peerptr->data).ipv4.ma),&ma4,sizeof(ma4)); - peerptr->af = af; - } - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - back = dk4socket_wc_inet_pton( - &ma6, sizeof(ma6), AF_INET6, maptr, erp - ); - if (DK4_SOCKET_RESULT_SUCCESS == back) { - DK4_MEMCPY(&((peerptr->data).ipv6.ad),&in6,sizeof(in6)); - DK4_MEMCPY(&((peerptr->data).ipv6.ma),&ma6,sizeof(ma6)); - peerptr->af = af; - } - } break; -#endif - } - } - } else { - /* Host - */ - switch (af) { - case AF_INET : { - ma4.s_addr = dk4socket_htonl(0xFFFFFFFFUL); - DK4_MEMCPY(&((peerptr->data).ipv4.ad), &in4, sizeof(in4)); - DK4_MEMCPY(&((peerptr->data).ipv4.ma), &ma4, sizeof(ma4)); - peerptr->af = af; - back = DK4_SOCKET_RESULT_SUCCESS; - } break; -#if DK4_HAVE_STRUCT_SOCKADDR_IN6 - case AF_INET6 : { - for (i = 0; i < 16; i++) { ma6.s6_addr[i] = 0xFF; } - DK4_MEMCPY(&((peerptr->data).ipv6.ad), &in6, sizeof(in6)); - DK4_MEMCPY(&((peerptr->data).ipv6.ma), &ma6, sizeof(ma6)); - peerptr->af = af; - back = DK4_SOCKET_RESULT_SUCCESS; - } break; -#endif - default : { - /* Must not happen */ - } break; - } - } - } - } - } else { - dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); - } - return back; -} - - -#else -#error No networking functions using wchar_t host and service names available! -#endif -#endif - - -int -dk4socket_get_allowed_peer( - dk4_allowed_peer_t *peerptr, - const dkChar *str, - dk4_er_t *erp -) -{ -#if DK4_USE_ASSERT - assert(NULL != peerptr); - assert(NULL != str); -#endif -#if DK4_CHAR_SIZE > 1 - return ( - dk4socket_wc_get_allowed_peer(peerptr, str, erp) - ); -#else - return ( - dk4socket_c8_get_allowed_peer(peerptr, str, erp) - ); -#endif -} - |