summaryrefslogtreecommitdiff
path: root/support/dktools/dk4sock35.ctr
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/dk4sock35.ctr')
-rw-r--r--support/dktools/dk4sock35.ctr61
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;
+}
+