Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
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
19namespace toolbox {
20inline namespace net {
21
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
boost::asio::ip::address IpAddr
Definition IpAddr.hpp:24
constexpr auto bind() noexcept
Definition Slot.hpp:92
IpMcastGroup(const IpAddr &addr, unsigned ifindex=0) noexcept
Definition McastSock.cpp:22