diff options
Diffstat (limited to 'support/dktools/dk4sock35.ctr')
-rw-r--r-- | support/dktools/dk4sock35.ctr | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/support/dktools/dk4sock35.ctr b/support/dktools/dk4sock35.ctr new file mode 100644 index 0000000000..2b58ea1293 --- /dev/null +++ b/support/dktools/dk4sock35.ctr @@ -0,0 +1,61 @@ +%% options + +copyright owner = Dirk Krause +copyright year = 2016-xxxx +license = bsd + +%% module + +#include "dk4sock.h" + + + +$!trace-include + + + +dk4_socket_t +dk4socket_udp_client_for_addr( + int addrfam, + struct sockaddr *pLocalAddr, + size_t szLocalAddr, + dk4_er_t *erp +) +{ + dk4_socket_t back = INVALID_SOCKET; + int res; + $? "+ dk4socket_udp_client_for_addr" + if ((NULL != pLocalAddr) && (0 < szLocalAddr)) { $? ". arguments" + switch (addrfam) { + case PF_INET : +#if DK4_HAVE_STRUCT_SOCKADDR_IN6 + case PF_INET6 : +#endif + { $? ". pf ok" + back = dk4socket_open(addrfam, SOCK_DGRAM, 0, erp); + if (INVALID_SOCKET != back) { + res = dk4socket_bind(back, pLocalAddr, szLocalAddr, erp); + if (DK4_SOCKET_RESULT_SUCCESS != res) { $? "! bind" + (void)dk4socket_close(back, NULL); + back = INVALID_SOCKET; + } +#if TRACE_DEBUG + else { $? ". bind" + } +#endif + } +#if TRACE_DEBUG + else { $? "! socket" + } +#endif + } break; + default : { $? "! invalid pf" + dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); + } break; + } + } else { $? "! arguments" + dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); + } $? "- dk4socket_udp_client_for_addr %d", (int)back + return back; +} + |