7 #if defined ZMQ_HAVE_TIPC
22 #include <sys/socket.h>
24 #if defined ZMQ_HAVE_VXWORKS
26 #include <tipc/tipc.h>
28 #include <linux/tipc.h>
31 zmq::tipc_listener_t::tipc_listener_t (io_thread_t *io_thread_,
32 socket_base_t *socket_,
34 stream_listener_base_t (io_thread_, socket_,
options_)
38 void zmq::tipc_listener_t::in_event ()
45 _socket->event_accept_failed (
58 return zmq::get_socket_name<tipc_address_t> (fd_, socket_end_);
61 int zmq::tipc_listener_t::set_local_address (
const char *addr_)
64 int rc = _address.resolve (addr_);
69 const sockaddr_tipc *
const a =
70 reinterpret_cast<const sockaddr_tipc *
> (_address.addr ());
71 if (!_address.is_random () &&
a->addrtype == TIPC_ADDR_ID) {
82 if (_address.is_random ()) {
83 struct sockaddr_storage ss;
89 tipc_address_t (
reinterpret_cast<struct sockaddr *
> (&ss), sl);
93 _address.to_string (_endpoint);
96 if (_address.is_service ()) {
97 #ifdef ZMQ_HAVE_VXWORKS
100 rc = bind (_s, _address.addr (), _address.addrlen ());
107 rc = listen (_s,
options.backlog);
122 zmq::fd_t zmq::tipc_listener_t::accept ()
127 struct sockaddr_storage ss = {};
128 socklen_t ss_len =
sizeof (ss);
131 #ifdef ZMQ_HAVE_VXWORKS
132 fd_t sock = ::accept (_s, (
struct sockaddr *) &ss, (
int *) &ss_len);
135 ::accept (_s,
reinterpret_cast<struct sockaddr *
> (&ss), &ss_len);