zsockopt(3)

zsockopt(3)

CZMQ Manual - CZMQ/1.4.1

Name

zsockopt - get/set ØMQ socket options

Synopsis

#if (ZMQ_VERSION_MAJOR == 2)
//  Get socket options
CZMQ_EXPORT int zsocket_hwm (void *zocket);
CZMQ_EXPORT int zsocket_swap (void *zocket);
CZMQ_EXPORT int zsocket_affinity (void *zocket);
//  Returns freshly allocated string, free when done
CZMQ_EXPORT char * zsocket_identity (void *zocket);
CZMQ_EXPORT int zsocket_rate (void *zocket);
CZMQ_EXPORT int zsocket_recovery_ivl (void *zocket);
CZMQ_EXPORT int zsocket_recovery_ivl_msec (void *zocket);
CZMQ_EXPORT int zsocket_mcast_loop (void *zocket);
#   if (ZMQ_VERSION_MINOR == 2)
CZMQ_EXPORT int zsocket_rcvtimeo (void *zocket);
#   endif
#   if (ZMQ_VERSION_MINOR == 2)
CZMQ_EXPORT int zsocket_sndtimeo (void *zocket);
#   endif
CZMQ_EXPORT int zsocket_sndbuf (void *zocket);
CZMQ_EXPORT int zsocket_rcvbuf (void *zocket);
CZMQ_EXPORT int zsocket_linger (void *zocket);
CZMQ_EXPORT int zsocket_reconnect_ivl (void *zocket);
CZMQ_EXPORT int zsocket_reconnect_ivl_max (void *zocket);
CZMQ_EXPORT int zsocket_backlog (void *zocket);
CZMQ_EXPORT int zsocket_type (void *zocket);
CZMQ_EXPORT int zsocket_rcvmore (void *zocket);
CZMQ_EXPORT int zsocket_fd (void *zocket);
CZMQ_EXPORT int zsocket_events (void *zocket);

//  Set socket options
CZMQ_EXPORT void zsocket_set_hwm (void *zocket, int hwm);
CZMQ_EXPORT void zsocket_set_swap (void *zocket, int swap);
CZMQ_EXPORT void zsocket_set_affinity (void *zocket, int affinity);
CZMQ_EXPORT void zsocket_set_identity (void *zocket, char * identity);
CZMQ_EXPORT void zsocket_set_rate (void *zocket, int rate);
CZMQ_EXPORT void zsocket_set_recovery_ivl (void *zocket, int recovery_ivl);
CZMQ_EXPORT void zsocket_set_recovery_ivl_msec (void *zocket, int recovery_ivl_msec);
CZMQ_EXPORT void zsocket_set_mcast_loop (void *zocket, int mcast_loop);
#   if (ZMQ_VERSION_MINOR == 2)
CZMQ_EXPORT void zsocket_set_rcvtimeo (void *zocket, int rcvtimeo);
#   endif
#   if (ZMQ_VERSION_MINOR == 2)
CZMQ_EXPORT void zsocket_set_sndtimeo (void *zocket, int sndtimeo);
#   endif
CZMQ_EXPORT void zsocket_set_sndbuf (void *zocket, int sndbuf);
CZMQ_EXPORT void zsocket_set_rcvbuf (void *zocket, int rcvbuf);
CZMQ_EXPORT void zsocket_set_linger (void *zocket, int linger);
CZMQ_EXPORT void zsocket_set_reconnect_ivl (void *zocket, int reconnect_ivl);
CZMQ_EXPORT void zsocket_set_reconnect_ivl_max (void *zocket, int reconnect_ivl_max);
CZMQ_EXPORT void zsocket_set_backlog (void *zocket, int backlog);
CZMQ_EXPORT void zsocket_set_subscribe (void *zocket, char * subscribe);
CZMQ_EXPORT void zsocket_set_unsubscribe (void *zocket, char * unsubscribe);
#endif

#if (ZMQ_VERSION_MAJOR == 3)
//  Get socket options
CZMQ_EXPORT int zsocket_type (void *zocket);
CZMQ_EXPORT int zsocket_sndhwm (void *zocket);
CZMQ_EXPORT int zsocket_rcvhwm (void *zocket);
CZMQ_EXPORT int zsocket_affinity (void *zocket);
//  Returns freshly allocated string, free when done
CZMQ_EXPORT char * zsocket_identity (void *zocket);
CZMQ_EXPORT int zsocket_rate (void *zocket);
CZMQ_EXPORT int zsocket_recovery_ivl (void *zocket);
CZMQ_EXPORT int zsocket_sndbuf (void *zocket);
CZMQ_EXPORT int zsocket_rcvbuf (void *zocket);
CZMQ_EXPORT int zsocket_linger (void *zocket);
CZMQ_EXPORT int zsocket_reconnect_ivl (void *zocket);
CZMQ_EXPORT int zsocket_reconnect_ivl_max (void *zocket);
CZMQ_EXPORT int zsocket_backlog (void *zocket);
CZMQ_EXPORT int zsocket_maxmsgsize (void *zocket);
CZMQ_EXPORT int zsocket_multicast_hops (void *zocket);
CZMQ_EXPORT int zsocket_rcvtimeo (void *zocket);
CZMQ_EXPORT int zsocket_sndtimeo (void *zocket);
CZMQ_EXPORT int zsocket_ipv4only (void *zocket);
CZMQ_EXPORT int zsocket_rcvmore (void *zocket);
CZMQ_EXPORT int zsocket_fd (void *zocket);
CZMQ_EXPORT int zsocket_events (void *zocket);
//  Returns freshly allocated string, free when done
CZMQ_EXPORT char * zsocket_last_endpoint (void *zocket);

//  Set socket options
CZMQ_EXPORT void zsocket_set_sndhwm (void *zocket, int sndhwm);
CZMQ_EXPORT void zsocket_set_rcvhwm (void *zocket, int rcvhwm);
CZMQ_EXPORT void zsocket_set_affinity (void *zocket, int affinity);
CZMQ_EXPORT void zsocket_set_subscribe (void *zocket, char * subscribe);
CZMQ_EXPORT void zsocket_set_unsubscribe (void *zocket, char * unsubscribe);
CZMQ_EXPORT void zsocket_set_identity (void *zocket, char * identity);
CZMQ_EXPORT void zsocket_set_rate (void *zocket, int rate);
CZMQ_EXPORT void zsocket_set_recovery_ivl (void *zocket, int recovery_ivl);
CZMQ_EXPORT void zsocket_set_sndbuf (void *zocket, int sndbuf);
CZMQ_EXPORT void zsocket_set_rcvbuf (void *zocket, int rcvbuf);
CZMQ_EXPORT void zsocket_set_linger (void *zocket, int linger);
CZMQ_EXPORT void zsocket_set_reconnect_ivl (void *zocket, int reconnect_ivl);
CZMQ_EXPORT void zsocket_set_reconnect_ivl_max (void *zocket, int reconnect_ivl_max);
CZMQ_EXPORT void zsocket_set_backlog (void *zocket, int backlog);
CZMQ_EXPORT void zsocket_set_maxmsgsize (void *zocket, int maxmsgsize);
CZMQ_EXPORT void zsocket_set_multicast_hops (void *zocket, int multicast_hops);
CZMQ_EXPORT void zsocket_set_rcvtimeo (void *zocket, int rcvtimeo);
CZMQ_EXPORT void zsocket_set_sndtimeo (void *zocket, int sndtimeo);
CZMQ_EXPORT void zsocket_set_ipv4only (void *zocket, int ipv4only);
CZMQ_EXPORT void zsocket_set_delay_attach_on_connect (void *zocket, int delay_attach_on_connect);
CZMQ_EXPORT void zsocket_set_router_mandatory (void *zocket, int router_mandatory);
CZMQ_EXPORT void zsocket_set_router_raw (void *zocket, int router_raw);
CZMQ_EXPORT void zsocket_set_xpub_verbose (void *zocket, int xpub_verbose);

//  Emulation of widely-used 2.x socket options
void zsocket_set_hwm (void *zocket, int hwm);
#endif

//  Self test of this class
CZMQ_EXPORT int zsockopt_test (bool verbose);

Description

The zsockopt class provides access to the ØMQ getsockopt/setsockopt API.

This class is generated, using the GSL code generator. See the sockopts XML file, which provides the metadata, and the sockopts.gsl template, which does the work.

Example

From zsockopt_test method

 zctx_t *ctx = zctx_new ();
 assert (ctx);
 void *zocket;
#if (ZMQ_VERSION_MAJOR == 2)
# if defined (ZMQ_HWM)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_hwm (zocket, 1);
 assert (zsocket_hwm (zocket) == 1);
 zsocket_hwm (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SWAP)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_swap (zocket, 1);
 assert (zsocket_swap (zocket) == 1);
 zsocket_swap (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_AFFINITY)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_affinity (zocket, 1);
 assert (zsocket_affinity (zocket) == 1);
 zsocket_affinity (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_IDENTITY)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_identity (zocket, "test");
 char *identity = zsocket_identity (zocket);
 assert (identity);
 free (identity);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RATE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rate (zocket, 1);
 assert (zsocket_rate (zocket) == 1);
 zsocket_rate (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECOVERY_IVL)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_recovery_ivl (zocket, 1);
 assert (zsocket_recovery_ivl (zocket) == 1);
 zsocket_recovery_ivl (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECOVERY_IVL_MSEC)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_recovery_ivl_msec (zocket, 1);
 assert (zsocket_recovery_ivl_msec (zocket) == 1);
 zsocket_recovery_ivl_msec (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_MCAST_LOOP)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_mcast_loop (zocket, 1);
 assert (zsocket_mcast_loop (zocket) == 1);
 zsocket_mcast_loop (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if (ZMQ_VERSION_MINOR == 2)
# if defined (ZMQ_RCVTIMEO)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rcvtimeo (zocket, 1);
 assert (zsocket_rcvtimeo (zocket) == 1);
 zsocket_rcvtimeo (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# endif
# if (ZMQ_VERSION_MINOR == 2)
# if defined (ZMQ_SNDTIMEO)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_sndtimeo (zocket, 1);
 assert (zsocket_sndtimeo (zocket) == 1);
 zsocket_sndtimeo (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# endif
# if defined (ZMQ_SNDBUF)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_sndbuf (zocket, 1);
 assert (zsocket_sndbuf (zocket) == 1);
 zsocket_sndbuf (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVBUF)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rcvbuf (zocket, 1);
 assert (zsocket_rcvbuf (zocket) == 1);
 zsocket_rcvbuf (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_LINGER)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_linger (zocket, 1);
 assert (zsocket_linger (zocket) == 1);
 zsocket_linger (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECONNECT_IVL)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_reconnect_ivl (zocket, 1);
 assert (zsocket_reconnect_ivl (zocket) == 1);
 zsocket_reconnect_ivl (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECONNECT_IVL_MAX)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_reconnect_ivl_max (zocket, 1);
 assert (zsocket_reconnect_ivl_max (zocket) == 1);
 zsocket_reconnect_ivl_max (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_BACKLOG)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_backlog (zocket, 1);
 assert (zsocket_backlog (zocket) == 1);
 zsocket_backlog (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SUBSCRIBE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_subscribe (zocket, "test");
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_UNSUBSCRIBE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_unsubscribe (zocket, "test");
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_TYPE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_type (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVMORE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_rcvmore (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_FD)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_fd (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_EVENTS)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_events (zocket);
 zsocket_destroy (ctx, zocket);
# endif
#endif

#if (ZMQ_VERSION_MAJOR == 3)
# if defined (ZMQ_TYPE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_type (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SNDHWM)
 zocket = zsocket_new (ctx, ZMQ_PUB);
 assert (zocket);
 zsocket_set_sndhwm (zocket, 1);
 assert (zsocket_sndhwm (zocket) == 1);
 zsocket_sndhwm (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVHWM)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rcvhwm (zocket, 1);
 assert (zsocket_rcvhwm (zocket) == 1);
 zsocket_rcvhwm (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_AFFINITY)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_affinity (zocket, 1);
 assert (zsocket_affinity (zocket) == 1);
 zsocket_affinity (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SUBSCRIBE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_subscribe (zocket, "test");
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_UNSUBSCRIBE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_unsubscribe (zocket, "test");
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_IDENTITY)
 zocket = zsocket_new (ctx, ZMQ_DEALER);
 assert (zocket);
 zsocket_set_identity (zocket, "test");
 char *identity = zsocket_identity (zocket);
 assert (identity);
 free (identity);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RATE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rate (zocket, 1);
 assert (zsocket_rate (zocket) == 1);
 zsocket_rate (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECOVERY_IVL)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_recovery_ivl (zocket, 1);
 assert (zsocket_recovery_ivl (zocket) == 1);
 zsocket_recovery_ivl (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SNDBUF)
 zocket = zsocket_new (ctx, ZMQ_PUB);
 assert (zocket);
 zsocket_set_sndbuf (zocket, 1);
 assert (zsocket_sndbuf (zocket) == 1);
 zsocket_sndbuf (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVBUF)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rcvbuf (zocket, 1);
 assert (zsocket_rcvbuf (zocket) == 1);
 zsocket_rcvbuf (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_LINGER)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_linger (zocket, 1);
 assert (zsocket_linger (zocket) == 1);
 zsocket_linger (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECONNECT_IVL)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_reconnect_ivl (zocket, 1);
 assert (zsocket_reconnect_ivl (zocket) == 1);
 zsocket_reconnect_ivl (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RECONNECT_IVL_MAX)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_reconnect_ivl_max (zocket, 1);
 assert (zsocket_reconnect_ivl_max (zocket) == 1);
 zsocket_reconnect_ivl_max (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_BACKLOG)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_backlog (zocket, 1);
 assert (zsocket_backlog (zocket) == 1);
 zsocket_backlog (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_MAXMSGSIZE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_maxmsgsize (zocket, 1);
 assert (zsocket_maxmsgsize (zocket) == 1);
 zsocket_maxmsgsize (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_MULTICAST_HOPS)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_multicast_hops (zocket, 1);
 assert (zsocket_multicast_hops (zocket) == 1);
 zsocket_multicast_hops (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVTIMEO)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_rcvtimeo (zocket, 1);
 assert (zsocket_rcvtimeo (zocket) == 1);
 zsocket_rcvtimeo (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_SNDTIMEO)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_sndtimeo (zocket, 1);
 assert (zsocket_sndtimeo (zocket) == 1);
 zsocket_sndtimeo (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_IPV4ONLY)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_set_ipv4only (zocket, 1);
 assert (zsocket_ipv4only (zocket) == 1);
 zsocket_ipv4only (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_DELAY_ATTACH_ON_CONNECT)
 zocket = zsocket_new (ctx, ZMQ_PUB);
 assert (zocket);
 zsocket_set_delay_attach_on_connect (zocket, 1);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_ROUTER_MANDATORY)
 zocket = zsocket_new (ctx, ZMQ_ROUTER);
 assert (zocket);
 zsocket_set_router_mandatory (zocket, 1);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_ROUTER_RAW)
 zocket = zsocket_new (ctx, ZMQ_ROUTER);
 assert (zocket);
 zsocket_set_router_raw (zocket, 1);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_XPUB_VERBOSE)
 zocket = zsocket_new (ctx, ZMQ_XPUB);
 assert (zocket);
 zsocket_set_xpub_verbose (zocket, 1);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_RCVMORE)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_rcvmore (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_FD)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_fd (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_EVENTS)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 zsocket_events (zocket);
 zsocket_destroy (ctx, zocket);
# endif
# if defined (ZMQ_LAST_ENDPOINT)
 zocket = zsocket_new (ctx, ZMQ_SUB);
 assert (zocket);
 char *last_endpoint = zsocket_last_endpoint (zocket);
 assert (last_endpoint);
 free (last_endpoint);
 zsocket_destroy (ctx, zocket);
# endif

 zocket = zsocket_new (ctx, ZMQ_SUB);
 zsocket_set_hwm (zocket, 1);
#endif
  zctx_destroy (&ctx);

See also

czmq(7)

Authors

The CZMQ manual was written by Pieter Hintjens<moc.xitami|hp#moc.xitami|hp>.

Resources

Main web site: http://czmq.zeromq.org/

Report bugs to the ØMQ development mailing list: <gro.qmorez.stsil|ved-qmorez#gro.qmorez.stsil|ved-qmorez>

Copyright

Copyright (c) 1991-2010 iMatix Corporation and contributors. License LGPLv3+: GNU LGPL 3 or later <http://gnu.org/licenses/lgpl.html>. This is free software: you are free to change it and redistribute it. There is NO WARRANTY, to the extent permitted by law. For details see the files COPYING and COPYING.LESSER included with the CZMQ distribution.