summaryrefslogtreecommitdiff
path: root/support/dktools/dk4sock30.c
diff options
context:
space:
mode:
Diffstat (limited to 'support/dktools/dk4sock30.c')
-rw-r--r--support/dktools/dk4sock30.c303
1 files changed, 0 insertions, 303 deletions
diff --git a/support/dktools/dk4sock30.c b/support/dktools/dk4sock30.c
deleted file mode 100644
index e5eb7733dc..0000000000
--- a/support/dktools/dk4sock30.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
-Copyright (C) 2016-2020, Dirk Krause
-SPDX-License-Identifier: BSD-3-Clause
-*/
-
-/*
- WARNING: This file was generated by the dkct program (see
- http://dktools.sourceforge.net/ for details).
- Changes you make here will be lost if dkct is run again!
- You should modify the original source and run dkct on it.
- Original source: dk4sock30.ctr
-*/
-
-/** @file dk4sock30.c The dk4sock30 module.
-*/
-
-
-#line 9 "dk4sock30.ctr"
-
-#include "dk4conf.h"
-#include "dk4sock.h"
-#include "dk4mem.h"
-
-#if DK4_HAVE_GETADDRINFO
-#include "dk4mao8d.h"
-#else
-#include "dk4mai8dus.h"
-#endif
-
-#if DK4_HAVE_ASSERT_H
-#ifndef ASSERT_H_INCLUDED
-#include <assert.h>
-#define ASSERT_H_INCLUDED 1
-#endif
-#endif
-
-
-
-
-#line 29 "dk4sock30.ctr"
-
-
-
-/** Create UDP socket set for a local port number.
- @param servicename Local service name.
- @param local Flag: Allow local connections only.
- @param broadcast Flag: Prepare for broadcast send.
- @param numeric Flag: Service name is numeric.
- @param erp Error report, may be NULL.
- @return Socket set on success, NULL on error.
-*/
-static
-dk4_socket_set_t *
-dk4socket_c8_set_udp_num_flag(
- const char *servicename,
- int local,
- int broadcast,
- int numeric,
- dk4_er_t *erp
-)
-{
-#if DK4_HAVE_GETADDRINFO
- /* +++++ +getaddrinfo */
- struct addrinfo hints;
- struct addrinfo *addri = NULL;
- struct addrinfo *paddr = NULL;
- dk4_socket_set_t *back = NULL;
- size_t numad = 0;
- int res = 0;
-#if DK4_HAVE_SETSOCKOPT && (defined(SO_REUSEPORT) || defined(SO_REUSEADDR))
- int opt = 0;
-#endif
-
-
-#line 62 "dk4sock30.ctr"
-#if DK4_USE_ASSERT
- assert(NULL != servicename);
-#endif
- if (NULL != servicename) {
- DK4_MEMRES(&hints, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_flags = 0;
- hints.ai_protocol = 0;
- hints.ai_addrlen = 0;
- hints.ai_canonname = NULL;
- hints.ai_addr = NULL;
- hints.ai_next = NULL;
- if (0 == local) { hints.ai_flags |= AI_PASSIVE; }
- if (0 != numeric) { hints.ai_flags |= AI_NUMERICSERV; }
- res = getaddrinfo(NULL, servicename, &hints, &addri);
- if ((0 == res) && (NULL != addri)) {
- paddr = addri;
- while (NULL != paddr) { numad++; paddr = paddr->ai_next; }
- if (0 < numad) {
-
-#line 82 "dk4sock30.ctr"
- paddr = addri;
- back = dk4socket_set_new(numad, erp);
- if (NULL != back) {
- while (NULL != paddr) {
-
-#line 86 "dk4sock30.ctr"
- (back->pSockets)[back->szUsed] = dk4socket_open(
- paddr->ai_family, SOCK_DGRAM, 0, erp
- );
- if (INVALID_SOCKET != (back->pSockets)[back->szUsed]) {
-#if DK4_HAVE_SETSOCKOPT && defined(SO_REUSEPORT)
-
-
-#line 92 "dk4sock30.ctr"
- dk4socket_set_one_bytes(&opt, sizeof(opt));
- res = setsockopt(
- (back->pSockets)[back->szUsed], SOL_SOCKET,
- SO_REUSEPORT, (void *)(&opt), sizeof(opt)
- );
- if (0 != res) {
-
-#line 98 "dk4sock30.ctr"
- }
-#else
-#if DK4_HAVE_SETSOCKOPT && defined(SO_REUSEADDR)
-
-
-#line 102 "dk4sock30.ctr"
- dk4socket_set_one_bytes(&opt, sizeof(opt));
- res = setsockopt(
- (back->pSockets)[back->szUsed], SOL_SOCKET,
- SO_REUSEADDR, (void *)(&opt), sizeof(opt)
- );
- if (0 != res) {
-
-#line 108 "dk4sock30.ctr"
- }
-#else
-
-
-#line 111 "dk4sock30.ctr"
-#endif
-#endif
-#if DK4_HAVE_SETSOCKOPT && defined(SO_BROADCAST)
-
-
-#line 115 "dk4sock30.ctr"
- if (0 != broadcast) {
- dk4socket_set_one_bytes(&opt, sizeof(opt));
- res = setsockopt(
- (back->pSockets)[back->szUsed], SOL_SOCKET,
- SO_BROADCAST, (void *)(&opt), sizeof(opt)
- );
- if (0 != res) {
-
-#line 122 "dk4sock30.ctr"
- }
- }
-#else
-
-
-#line 126 "dk4sock30.ctr"
-#endif
- res = dk4socket_bind(
- (back->pSockets)[back->szUsed], paddr->ai_addr,
- paddr->ai_addrlen, erp
- );
- if (DK4_SOCKET_RESULT_SUCCESS == res) {
- back->szUsed += 1;
-
-
-#line 134 "dk4sock30.ctr"
- } else {
-
-#line 135 "dk4sock30.ctr"
- (void)dk4socket_close((back->pSockets)[back->szUsed], NULL);
- (back->pSockets)[back->szUsed] = INVALID_SOCKET;
- }
- } else {
-
-#line 139 "dk4sock30.ctr"
- }
- paddr = paddr->ai_next;
- }
- if (0 == back->szUsed) {
- dk4socket_set_delete(back, NULL);
- back = NULL;
- }
- }
- }
- freeaddrinfo(addri);
- } else {
- dk4error_set_idetails(erp, DK4_E_SOCKET_GETADDRLOC, res);
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
-
-
-#line 156 "dk4sock30.ctr"
- return back;
- /* ----- +getaddrinfo */
-#else
- /* +++++ -getaddrinfo */
- const char *endptr = NULL;
- dk4_socket_set_t *back = NULL;
- struct servent *serv = NULL;
- int iport = 0;
- int res = 0;
- unsigned short portno = 0;
-
-
-#line 167 "dk4sock30.ctr"
-#if DK4_USE_ASSERT
- assert(NULL != servicename);
-#endif
- if (NULL != servicename) {
- res = dk4ma_input_c8_dec_ushort(
- &portno, servicename, &endptr, 1, NULL
- );
- if (0 != res) {
- back = dk4socket_set_udp_directly(portno, local, broadcast, erp);
- } else {
- dk4socket_error_reset();
- serv = getservbyname(servicename, NULL);
- if (NULL != serv) {
- iport = serv->s_port;
- dk4socket_swap_bytes_if_not_bigendian((void *)(&iport), sizeof(iport));
- portno = (unsigned short)iport;
- back = dk4socket_set_udp_directly(portno, local, broadcast, erp);
- } else {
- dk4socket_error_report(erp, DK4_E_SOCKET_GETSERVBYNAME);
- }
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
-
-
-#line 192 "dk4sock30.ctr"
- return back;
- /* ----- -getaddrinfo */
-#endif
-}
-
-
-
-dk4_socket_set_t *
-dk4socket_c8_set_udp(
- unsigned short portno,
- int local,
- int broadcast,
- dk4_er_t *erp
-)
-{
-#if DK4_HAVE_GETADDRINFO
- /* +++++ +getaddrinfo */
- char pnb[16*sizeof(dk4_um_t)];
- dk4_socket_set_t *back = NULL;
- int res;
-#if DK4_USE_ASSERT
- assert(0 < portno);
-#endif
- if (0 < portno) {
- res = dk4ma_write_c8_decimal_unsigned(
- pnb, sizeof(pnb), (dk4_um_t)portno, 0, erp
- );
- if (0 != res) {
- back = dk4socket_c8_set_udp_num_flag(
- pnb, local, broadcast, 1, erp
- );
- }
- } else {
- dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
- }
- return back;
- /* ----- +getaddrinfo */
-#else
- /* +++++ -getaddrinfo */
- return (
- dk4socket_set_udp_directly(portno, local, broadcast, erp)
- );
- /* ----- -getaddrinfo */
-#endif
-}
-
-
-
-dk4_socket_set_t *
-dk4socket_c8_set_udp_service(
- const char *servicename,
- int local,
- int broadcast,
- dk4_er_t *erp
-)
-{
-#if DK4_USE_ASSERT
- assert(NULL != servicename);
-#endif
- return (
- dk4socket_c8_set_udp_num_flag(servicename, local, broadcast, 0, erp)
- );
-}
-
-
-