Kea
1.5.0
sockaddr_util.h
Go to the documentation of this file.
1
// Copyright (C) 2011-2015 Internet Systems Consortium, Inc. ("ISC")
2
//
3
// This Source Code Form is subject to the terms of the Mozilla Public
4
// License, v. 2.0. If a copy of the MPL was not distributed with this
5
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7
#ifndef SOCKADDR_UTIL_H
8
#define SOCKADDR_UTIL_H 1
9
10
#include <sys/types.h>
11
#include <sys/socket.h>
12
#include <netinet/in.h>
13
14
#include <cassert>
15
16
// These definitions in this file are for the convenience of internal
17
// implementation and test code, and are not intended to be used publicly.
18
// The namespace "internal" indicates the intent.
19
20
namespace
isc
{
21
namespace
util {
22
namespace
io {
23
namespace
internal {
24
25
inline
socklen_t
26
getSALength
(
const
struct
sockaddr& sa) {
27
if
(sa.sa_family == AF_INET) {
28
return
(
sizeof
(
struct
sockaddr_in));
29
}
else
{
30
assert(sa.sa_family == AF_INET6);
31
return
(
sizeof
(
struct
sockaddr_in6));
32
}
33
}
34
35
// Lower level C-APIs require conversion between various variants of
36
// sockaddr's, which is not friendly with C++. The following templates
37
// are a shortcut of common workaround conversion in such cases.
38
39
template
<
typename
SAType>
40
const
struct
sockaddr*
41
convertSockAddr
(
const
SAType* sa) {
42
const
void
* p = sa;
43
return
(
static_cast<
const
struct sockaddr*
>
(p));
44
}
45
46
template
<
typename
SAType>
47
const
SAType*
48
convertSockAddr
(
const
struct
sockaddr* sa) {
49
const
void
* p = sa;
50
return
(
static_cast<
const
SAType*
>
(p));
51
}
52
53
template
<
typename
SAType>
54
struct
sockaddr*
55
convertSockAddr
(SAType* sa) {
56
void
* p = sa;
57
return
(
static_cast<
struct sockaddr*
>
(p));
58
}
59
60
template
<
typename
SAType>
61
SAType*
62
convertSockAddr
(
struct
sockaddr* sa) {
63
void
* p = sa;
64
return
(
static_cast<
SAType*
>
(p));
65
}
66
67
}
68
}
69
}
70
}
71
72
#endif // SOCKADDR_UTIL_H
73
74
// Local Variables:
75
// mode: c++
76
// End:
isc::util::io::internal::getSALength
socklen_t getSALength(const struct sockaddr &sa)
Definition:
sockaddr_util.h:26
isc
Defines the logger used by the top-level component of kea-dhcp-ddns.
Definition:
agent_parser.cc:144
isc::util::io::internal::convertSockAddr
const struct sockaddr * convertSockAddr(const SAType *sa)
Definition:
sockaddr_util.h:41
src
lib
util
io
sockaddr_util.h
Generated on Fri Jul 10 2020 09:12:51 for Kea by
1.8.18