NI XNET Socket Options - ni/grpc-device GitHub Wiki

Socket Options

nxSO_RXDATA

Purpose

Returns the number of characters currently available for reading from the socket.

Description

The nxSO_RXDATA option returns the number of characters queued in the socket's receive buffer.

nxSO_RCVBUF

Purpose

Returns the buffer size allocated for input buffers.

Description

The nxSO_RCVBUF option sets or gets the maximum socket receive buffer in bytes.

nxSO_REUSEADDR

Purpose

Indicates and controls address reuse on a socket address.

Description

The nxSO_REUSEADDR option gets or sets a Boolean value that indicates whether a local address can be reused. When enabled, this option allows multiple proxy servers to use the same address/port combinations for listening and for forwarding source addresses.

nxSO_SNDBUF

Purpose

Indicates and controls the buffer size allocated for output buffers.

Description

The nxSO_SNDBUF option sets or gets the maximum socket send buffer in bytes. The socket send buffer is an output buffer used by the networking implementation; it may need to be increased for high-volume connections.

nxSO_NONBLOCK

Purpose

Indicates and controls whether the socket is set to be nonblocking.

Description

The nxSO_NONBLOCK option sets or gets whether the socket is operating in blocking (0) or nonblocking (1) mode. A value of 1 is returned if the socket is currently set to nonblocking mode.

nxSO_BINDTODEVICE

Purpose

Binds the socket to a virtual interface.

Description

The nxSO_BINDTODEVICE option binds the socket to a specific virtual interface, specified by virtual interface name. If the name is an empty string or the option length is zero, the socket binding is removed. If a socket is bound to a virtual interface, the socket processes only packets received from that particular virtual interface.

This option is supported for both nxgetsockopt and nxsetsockopt.

nxSO_ERROR

Purpose

Reports information about the error status and clears it.

Description

The nxSO_ERROR option gets and clears the pending socket error. This option is read-only. nxSO_ERROR stores an integer value.

nxSO_LINGER

Purpose

Indicates or controls the linger option of a TCP socket.

Description

The nxSO_LINGER option stores the linger structure, which is used to set or get the nxSO_LINGER option:

struct nxlinger {

int l_onoff; /* linger active */

int l_linger; /* how many seconds to linger for */

};

If nxSO_LINGER is enabled, the system blocks during nxclose or nxshutdown until the socket can transmit the data or until the end of the interval indicated by the l_linger member, whichever comes first. If nxSO_LINGER is not specified, and nxclose or nxshutdown is issued, the IP stack will handle closing the socket in the background.

nxIP_ADD_MEMBERSHIP

Purpose

Add a group member to a multicast group.

Description

The nxIP_ADD_MEMBERSHIP option adds membership to a single multicast group. Each membership is associated with a single interface. nxIP_ADD_MEMBERSHIP is valid only for nxsetsockopt.

A parameter of type struct nxip_mreq is used to set this value. This structure is defined in nxsocket.h as follows:

struct nxip_mreq {

struct nxin_addr imr_multiaddr; /* IPv4 multicast address of group */

struct nxin_addr imr_interface; /* local IP address of interface */

};

Use imr_multiaddr to specify the multicast group to join or leave.

Use imr_interface to specify the local IP address that is associated with the interface to which this request applies.

nxIP_DROP_MEMBERSHIP

Purpose

Remove a group member from a multicast group.

Description

The nxIP_DROP_MEMBERSHIP option removes membership from a single multicast group. Each membership is associated with a single interface. nxIP_DROP_MEMBERSHIP is valid only for nxsetsockopt.

A parameter of type struct nxip_mreq is used to set this value. This structure is defined in nxsocket.h as follows:

struct nxip_mreq {

struct nxin_addr imr_multiaddr; /* IPv4 multicast address of group */

struct nxin_addr imr_interface; /* local IP address of interface */

};

Use imr_multiaddr to specify the multicast group to join or leave.

Use imr_interface to specify the local IP address that is associated with the interface to which this request applies.

nxIP_MULTICAST_IF

Purpose

Sets or gets the IP interface over which outgoing multicast datagrams should be sent.

Description

In order to send to a multicasting group it is not necessary to join the groups. But to receive transmissions sent to a multicasting group, membership is required. For multicast sending, use an IP_MULTICAST_IF flag with nxsetsockopt. This specifies the interface to be used.

nxIP_MULTICAST_TTL

Purpose

Sets or reads the time-to-live (TTL) value of outgoing multicast packets for this socket.

Description

The nxIP_MULTICAST_TTL option enables the socket to limit the TTL value for outgoing multicast packets. The argument is an integer. It is important for multicast packets to set the smallest TTL possible. The default is 1, which means that multicast packets do not leave the local network unless the user program explicitly requests it.

nxIPV6_ADD_MEMBERSHIP

Purpose

Add a group member to a multicast group.

Description

The nxIPV6_ADD_MEMBERSHIP option adds membership to a single multicast group. Each membership is associated with a single interface. nxIPV6_ADD_MEMBERSHIP is valid only for nxsetsockopt.

A parameter of type struct nxipv6_mreq is used to set this value. This structure is defined in nxsocket.h as follows:

struct nxipv6_mreq {

struct nxin6_addr ipv6mr_multiaddr; /* IPv6 multicast address */

int32_t ipv6mr_interface; /* interface index, or 0 to use first available */

};

Use ipv6mr_multiaddr to specify the multicast group to join or leave.

Use ipv6mr_interface to specify the local IP address that is associated with the interface to which this request applies.

nxIPV6_JOIN_GROUP

Purpose

Add a group member to a multicast group.

Description

nxIPV6_JOIN_GROUP is an alias for nxIPV6_ADD_MEMBERSHIP.

nxIPV6_LEAVE_GROUP

Purpose

Remove a group member from a multicast group.

Description

nxIPV6_LEAVE_GROUP is an alias for nxIPV6_DROP_MEMBERSHIP.

nxIPV6_MULTICAST_HOPS

Purpose

Sets the multicast hop limit for the socket.

Description

The nxIPV6_MULTICAST_HOPS option limits the time-to-live (TTL) value associated with multicast traffic on the socket. The argument is a pointer to an integer. A value of -1 indicates to use the route default; otherwise, the integer must be between 0 and 255.

nxIPV6_MULTICAST_IF

Purpose

Sets or gets the IP interface over which outgoing multicast datagrams should be sent.

Description

In order to send to a multicasting group it is not necessary to join the groups. But to receive transmissions sent to a multicasting group, membership is required. For multicast sending, use an IP_MULTICAST_IF flag with nxsetsockopt. This specifies the interface to be used.

nxTCP_NODELAY

Purpose

Specifies whether to disable (1) or enable (0) the Nagle algorithm.

Description

The Nagle algorithm is disabled when this property is 1. The Nagle algorithm improves network performance by buffering written data until a full-size packet can be sent. This property is 0 by default.

⚠️ **GitHub.com Fallback** ⚠️