Convert a node descriptor into a string


#include <sys/netmgr.h>

int netmgr_ndtostr( unsigned flags,
                    int nd, 
                    char * buf,
                    size_t maxbuf );


Which part(s) of the Fully Qualified Path Name (FQPN) to adjust; see below.
The node descriptor that you want to convert.
A pointer to a buffer where the function can store the converted identifier.
The size of the buffer.



Use the -l c option to qcc to link against this library. This library is usually included automatically.


The netmgr_ndtostr() function converts a node descriptor, nd, to a string and stores the string in the buffer pointed to by buf. The size of the buffer is given by maxbuf.

A node descriptor is a temporary numeric description of a remote node. For more information, see the Qnet Networking chapter of the System Architecture guide.

The flags argument indicates which part(s) of the Fully Qualified Path Name (FQPN) to adjust. The following diagram shows the components for the FQPN, /net/

Figure 1. Components of a fully qualified pathname.

The Fully Qualified Node Name (FQNN) is

The default string that netmgr_ndtostr() builds is the FQNN, plus the Quality of Service (QoS) if it isn't the default (~loadbalance). You can pass this string to any other node that can call netmgr_strtond() and has a nd that refers to the same node with the same QoS.

A bitwise OR of flags modify the default string in the following way:

Never include the directory.
Always build a pathname to the root directory (i.e. /) of the node indicated by nd. For example, calling:
netmgr_ndtostr(ND2S_DIR_SHOW, nd, buf, sizeofbuf)

on a node with a default domain of using a nd that refers to a FQNN of results in the string, /net/

If Qnet isn't active on the node, and netmgr_ndtostr(ND2S_DIR_SHOW, nd, buf, sizeofbuf) has a nd of ND_LOCAL_NODE, then the string is /.

Never include the domain.
Always include the domain.
Display shorter node names on your local node. For example, calling:
netmgr_ndtostr(ND2S_LOCAL_STR, nd, buf, sizeofbuf)

on a node with a default domain of using a nd that refers to an FQPN of /net/ results in a string of peterv.

Whereas a nd that refers to /net/ results in

Never include the name.
Always include the name.
Never include the quality of service (QoS).
Always include the QoS.
Always include a leading separator. For example, calling:
netmgr_ndtostr(ND2S_SEP_FORCE | ND2S_DIR_HIDE |
               ND2S_NAME_HIDE| ND2S_DOMAIN_HIDE |
               ND2S_QOS_SHOW, nd, buf, sizeofbuf)

with a nd of ND_LOCAL_NODE results in a string of ~loadbalance. This is useful if you want to concatenate each component of the FQPN individually.

Note: Don't use a ND2S_*_HIDE and a corresponding ND2S_*_SHOW together.


The length of the string, or -1 if an error occurs (errno is set).


Qnet isn't running.


#include <stdio.h>
#include <stdlib.h>
#include <sys/netmgr.h>

int main ()
   int nd1, nd2, nd3, len;
   char path1[50] = "/net/dave",
        path2[50] = "/net/karen",
   nd1 = netmgr_strtond( path1, NULL);
   if (nd1 == -1) {
      perror ("netmgr_strtond" );
      return EXIT_FAILURE;
   else {
      printf ("Node id for %s is %d.\n", path1, nd1);
   nd2 = netmgr_strtond( path2, NULL);
   if (nd2 == -1) {
      perror ("netmgr_strtond" );
      return EXIT_FAILURE;
   else {
      printf ("Node id for %s is %d.\n", path2, nd2);
   nd3 = netmgr_remote_nd ( nd2, nd1 );
   if (nd3 == -1) {
      perror ("netmgr_strtond" );
      return EXIT_FAILURE;
   else {
      printf ("Node id for %s, relative to %s, is %d.\n",
              path1, path2, nd3);

   len = netmgr_ndtostr ( ND2S_DIR_HIDE | ND2S_DOMAIN_SHOW |
              ND2S_NAME_SHOW | ND2S_QOS_SHOW, nd1, buff, 100 );
   if (len == -1) {
      perror ("netmgr_ndtostr" );
   else {
      printf ("Node name for %d is %s.\n", nd1, buff);
      return EXIT_FAILURE;
   return EXIT_SUCCESS;


QNX Neutrino

Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes