Skip to content

Problem: ZMQ_MULTICAST_HOPS doesn't affect ZMQ_DGRAM sockets #4821

@khnsky

Description

@khnsky

It is impossible to change TTL of a DGRAM socket. Setting ZMQ_MULTICAST_HOPS doesn't affect ZMQ_DGRAM sockets because in zmq::udp_engine_t::plug only sets the TTL value if the socket is not raw (DGRAM is).

        if (!_options.raw_socket) {
            const ip_addr_t *out = udp_addr->target_addr ();
            _out_address = out->as_sockaddr ();
            _out_address_len = out->sockaddr_len ();

            if (out->is_multicast ()) {
                const bool is_ipv6 = (out->family () == AF_INET6);
                rc = rc
                     | set_udp_multicast_loop (_fd, is_ipv6,
                                               _options.multicast_loop);

                if (_options.multicast_hops > 0) {
                    rc = rc
                         | set_udp_multicast_ttl (_fd, is_ipv6,
                                                  _options.multicast_hops);
                }

                rc = rc | set_udp_multicast_iface (_fd, is_ipv6, udp_addr);
            }
        } else {

https://github.com/zeromq/libzmq/blob/master/src/udp_engine.cpp#L105-L124

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions