static void join_group(asio::ip::udp::socket& socket,
                       const asio::ip::udp::endpoint& ep,
                       const asio::ip::address& local_if)
{
    gcomm_assert(is_multicast(ep) == true);
    if (ep.address().is_v4() == true)
    {
        socket.set_option(asio::ip::multicast::join_group(ep.address().to_v4(),
                                                    local_if.to_v4()));
        socket.set_option(asio::ip::multicast::outbound_interface(local_if.to_v4()));
    }
    else
    {
        gu_throw_fatal << "mcast interface not implemented";
        socket.set_option(asio::ip::multicast::join_group(ep.address().to_v6()));
    }
}
Ejemplo n.º 2
0
 static inline std::string escape_addr(const asio::ip::address& addr)
 {
     if (addr.is_v4())
     {
         return addr.to_v4().to_string();
     }
     else
     {
         return "[" + addr.to_v6().to_string() + "]";
     }
 }
Ejemplo n.º 3
0
 static inline std::string anyaddr(const asio::ip::address& addr)
 {
     if (addr.is_v4() == true)
     {
         return addr.to_v4().any().to_string();
     }
     else
     {
         return addr.to_v6().any().to_string();
     }
     gu_throw_fatal;
     throw;
 }