1%%	options
2
3copyright owner	=	Dirk Krause
4copyright year	=	2015-xxxx
5SPDX-License-Identifier:	BSD-3-Clause
6
7
8%%	module
9
10#include "dk4conf.h"
11#include <libdk4sock/dk4sock.h>
12
13#include <stdio.h>
14
15#if DK4_HAVE_ERRNO_H
16#ifndef ERRNO_H_INCLUDED
17#include <errno.h>
18#define	ERRNO_H_INCLUDED 1
19#endif
20#endif
21
22#if DK4_HAVE_UNISTD_H
23#ifndef	UNISTD_H_INCLUDED
24#include <unistd.h>
25#define	UNISTD_H_INCLUDED 1
26#endif
27#endif
28
29#if DK4_HAVE_IO_H
30#ifndef	IO_H_INCLUDED
31#include <io.h>
32#define	IO_H_INCLUDED 1
33#endif
34#endif
35
36#if DK4_HAVE_ASSERT_H
37#ifndef	ASSERT_H_INCLUDED
38#include <assert.h>
39#define	ASSERT_H_INCLUDED 1
40#endif
41#endif
42
43$!trace-include
44
45
46
47int
48dk4socket_bind(
49  dk4_socket_t		 sock,
50  const struct sockaddr	*pAddr,
51  size_t		 szAddr,
52  dk4_er_t		*erp
53)
54{
55  int		 back = DK4_SOCKET_RESULT_FAILED;
56
57#if	DK4_USE_ASSERT
58  assert(INVALID_SOCKET != sock);
59  assert(NULL != pAddr);
60  assert(0 < szAddr);
61#endif
62  if ((INVALID_SOCKET != sock) && (NULL != pAddr) && (0 < szAddr)) {
63    (void)dk4socket_correct_addr_lgt(pAddr, &szAddr);
64    dk4socket_error_reset();
65#if DK4_HAVE_SOCKLEN_T
66    if (0 == bind(sock, pAddr, (socklen_t)szAddr))
67#else
68    if (0 == bind(sock, pAddr, (int)szAddr))
69#endif
70    {
71      back = DK4_SOCKET_RESULT_SUCCESS;
72    }
73    else
74    {
75      dk4socket_error_report(erp, DK4_E_SOCKET_BIND);
76    }
77  } else {
78    dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
79  }
80  return back;
81}
82
83