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.