The calling process subscribes or unsubscribes to node
          status change messages. A nodeup message is delivered
          to all subscribing processes when a new node is connected, and
          a nodedown message is delivered when a node is
          disconnected.
        If Flag is true, a new subscription is
          started. If Flag is false, all previous
          subscriptions started with the same Options
          are stopped. Two
          option lists are considered the same if they contain the same
          set of options.
        As from Kernel version 2.11.4, and ERTS version
          5.5.4, the following is guaranteed:
        
          nodeup messages are delivered before delivery
            of any message from the remote node passed through the
            newly established connection.
 
          nodedown messages are not delivered until all
            messages from the remote node that have been passed
            through the connection have been delivered.
 
        
        Notice that this is not guaranteed for Kernel
          versions before 2.11.4.
        As from Kernel version 2.11.4, subscriptions can also be
          made before the net_kernel server is started, that is,
          net_kernel:monitor_nodes/[1,2] does not return
          ignored.
        As from Kernel version 2.13, and ERTS version
          5.7, the following is guaranteed:
        
          nodeup messages are delivered after the
	    corresponding node appears in results from
	    erlang:nodes/X.
 
          nodedown messages are delivered after the
	    corresponding node has disappeared in results from
	    erlang:nodes/X.
 
        
        Notice that this is not guaranteed for Kernel
          versions before 2.13.
        The format of the node status change messages depends on
          Options. If Options is
          [], which is the default, the format is as follows:
        {nodeup, Node} | {nodedown, Node}
  Node = node() 
        If Options is not [], the format is
          as follows:
        {nodeup, Node, InfoList} | {nodedown, Node, InfoList}
  Node = node()
  InfoList = [{Tag, Val}] 
        InfoList is a list of tuples. Its contents depends on
          Options, see below.
        Also, when OptionList == [], only visible nodes, that
          is, nodes that appear in the result of
          erlang:nodes/0,
          are monitored.
        Option can be any of the following:
        
          - {node_type, NodeType}
 
          - 
            
Valid values for NodeType:
            
              - visible
 
              Subscribe to node status change messages for visible
               nodes only. The tuple {node_type, visible} is
               included in InfoList.
 
              - hidden
 
              Subscribe to node status change messages for hidden
               nodes only. The tuple {node_type, hidden} is
               included in InfoList.
 
              - all
 
              Subscribe to node status change messages for both
               visible and hidden nodes. The tuple
               {node_type, visible | hidden} is included in
               InfoList.
 
            
           
          - nodedown_reason
 
          - 
            
The tuple {nodedown_reason, Reason} is included in
              InfoList in nodedown messages.
            
	      Reason can, depending on which
	      distribution module or process that is used be any term,
	      but for the standard TCP distribution module it is
	      any of the following:
	    
            
              - connection_setup_failed
 
              The connection setup failed (after nodeup
                messages were sent).
 
              - no_network
 
              No network is available.
 
              - net_kernel_terminated
 
              The net_kernel process terminated.
 
              - shutdown
 
              Unspecified connection shutdown.
 
              - connection_closed
 
              The connection was closed.
 
              - disconnect
 
              The connection was disconnected (forced from the
                current node).
 
              - net_tick_timeout
 
              Net tick time-out.
 
              - send_net_tick_failed
 
              Failed to send net tick over the connection.
 
              - get_status_failed
 
              Status information retrieval from the Port
                holding the connection failed.