Toolbox
snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
toolbox
net
McastSock.cpp
Go to the documentation of this file.
1
// The Reactive C++ Toolbox.
2
// Copyright (C) 2013-2019 Swirly Cloud Limited
3
// Copyright (C) 2021 Reactive Markets Limited
4
//
5
// Licensed under the Apache License, Version 2.0 (the "License");
6
// you may not use this file except in compliance with the License.
7
// You may obtain a copy of the License at
8
//
9
// http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing, software
12
// distributed under the License is distributed on an "AS IS" BASIS,
13
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
// See the License for the specific language governing permissions and
15
// limitations under the License.
16
17
#include "
McastSock.hpp
"
18
19
namespace
toolbox
{
20
inline
namespace
net {
21
22
IpMcastGroup::IpMcastGroup
(
const
IpAddr
&
addr
,
unsigned
ifindex
)
noexcept
23
{
24
if
(
addr
.is_v6()) {
25
const
auto
&
bytes
=
addr
.to_v6().to_bytes();
26
family =
AF_INET6
;
27
memcpy
(&ipv6.ipv6mr_multiaddr,
bytes
.data(),
bytes
.size());
28
ipv6.ipv6mr_interface =
ifindex
;
29
}
else
{
30
assert
(
addr
.is_v4());
31
const
auto
&
bytes
=
addr
.to_v4().to_bytes();
32
family =
AF_INET
;
33
memcpy
(&ipv4.imr_multiaddr,
bytes
.data(),
bytes
.size());
34
ipv4.imr_ifindex =
ifindex
;
35
}
36
}
37
38
}
// namespace net
39
}
// namespace toolbox
McastSock.hpp
toolbox::net::IpAddr
boost::asio::ip::address IpAddr
Definition
IpAddr.hpp:24
toolbox::util::bind
constexpr auto bind() noexcept
Definition
Slot.hpp:92
toolbox
Definition
Benchmark.cpp:26
toolbox::net::IpMcastGroup::IpMcastGroup
IpMcastGroup(const IpAddr &addr, unsigned ifindex=0) noexcept
Definition
McastSock.cpp:22
Generated by
1.9.8