docs: def master(master=None, connected=True):
      '''
      .. versionadded:: 2015.5.0
  
      Fire an event if the minion gets disconnected from its master. This
      function is meant to be run via a scheduled job from the minion. If
      master_ip is an FQDN/Hostname, is must be resolvable to a valid IPv4
      address.
  
      CLI Example:
  
      .. code-block:: bash
  
          salt '*' status.master
      '''
  
      def _win_remotes_on(port):
          '''
          Windows specific helper function.
          Returns set of ipv4 host addresses of remote established connections
          on local or remote tcp port.
  
          Parses output of shell 'netstat' to get connections
  
          PS C:> netstat -n -p TCP
  
          Active Connections
  
            Proto  Local Address          Foreign Address        State
            TCP    10.1.1.26:3389         10.1.1.1:4505          ESTABLISHED
            TCP    10.1.1.26:56862        10.1.1.10:49155        TIME_WAIT
            TCP    10.1.1.26:56868        169.254.169.254:80     CLOSE_WAIT
            TCP    127.0.0.1:49197        127.0.0.1:49198        ESTABLISHED
            TCP    127.0.0.1:49198        127.0.0.1:49197        ESTABLISHED
          '''
          remotes = set()
          try:
              data = subprocess.check_output(['netstat', '-n', '-p', 'TCP'])  # pylint: disable=minimum-python-version
          except subprocess.CalledProcessError:
              log.error('Failed netstat')
              raise
  
          lines = salt.utils.stringutils.to_unicode(data).split('\n')
          for line in lines:
              if 'ESTABLISHED' not in line:
                  continue
              chunks = line.split()
              remote_host, remote_port = chunks[2].rsplit(':', 1)
              if int(remote_port) != port:
                  continue
              remotes.add(remote_host)
          return remotes
  
      # the default publishing port
      port = 4505
      master_ips = None
  
      if master:
          master_ips = _host_to_ips(master)
  
      if not master_ips:
          return
  
      if __salt__['config.get']('publish_port') != '':
          port = int(__salt__['config.get']('publish_port'))
  
      master_connection_status = False
      connected_ips = _win_remotes_on(port)
  
      # Get connection status for master
      for master_ip in master_ips:
          if master_ip in connected_ips:
              master_connection_status = True
              break
  
      # Connection to master is not as expected
      if master_connection_status is not connected:
          event = salt.utils.event.get_event('minion', opts=__opts__, listen=False)
          if master_connection_status:
              event.fire_event({'master': master}, salt.minion.master_event(type='connected'))
          else:
              event.fire_event({'master': master}, salt.minion.master_event(type='disconnected'))
  
      return master_connection_status