text: # -*- coding: utf-8 -*-
  """
  State to check firewall configurations
  
  .. versionadded:: 2016.3.0
  """
  from __future__ import absolute_import, print_function, unicode_literals
  
  
  def __virtual__():
      """
      Load only if network is loaded
      """
      if "network.connect" in __salt__:
          return "firewall"
      return (False, "network module could not be loaded")
  
  
  def check(name, port=None, **kwargs):
      """
      Checks if there is an open connection from the minion to the defined
      host on a specific port.
  
      name
        host name or ip address to test connection to
  
      port
        The port to test the connection on
  
      kwargs
        Additional parameters, parameters allowed are:
          proto (tcp or udp)
          family (ipv4 or ipv6)
          timeout
  
      .. code-block:: yaml
  
        testgoogle:
          firewall.check:
            - name: 'google.com'
            - port: 80
            - proto: 'tcp'
  
      """
  
      # set name to host as required by the module
      host = name
  
      ret = {"name": name, "result": True, "changes": {}, "comment": ""}
  
      if "test" not in kwargs:
          kwargs["test"] = __opts__.get("test", False)
  
      # check the connection
      if kwargs["test"]:
          ret["result"] = True
          ret["comment"] = "The connection will be tested"
      else:
          results = __salt__["network.connect"](host, port, **kwargs)
          ret["result"] = results["result"]
          ret["comment"] = results["comment"]
  
      return ret
  