{
  "module_spec": {
    "module_name": "Resolver",
    "module_description": "Recursive service",
    "config_data": [
      {
        "item_name": "timeout_query",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 2000
      },
      {
        "item_name": "timeout_client",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 4000
      },
      {
        "item_name": "timeout_lookup",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 30000
      },
      {
        "item_name": "retries",
        "item_type": "integer",
        "item_optional": false,
        "item_default": 3
      },
      {
        "item_name": "forward_addresses",
        "item_type": "list",
        "item_optional": true,
        "item_default": [],
        "list_item_spec" : {
          "item_name": "address",
          "item_type": "map",
          "item_optional": false,
          "item_default": {},
          "map_item_spec": [
            {
              "item_name": "address",
              "item_type": "string",
              "item_optional": false,
              "item_default": "::1"
            },
            {
              "item_name": "port",
              "item_type": "integer",
              "item_optional": false,
              "item_default": 53
            }
          ]
        }
      },
      {
        "item_name": "root_addresses",
        "item_type": "list",
        "item_optional": true,
        "item_default": [],
        "list_item_spec" : {
          "item_name": "address",
          "item_type": "map",
          "item_optional": false,
          "item_default": {},
          "map_item_spec": [
            {
              "item_name": "address",
              "item_type": "string",
              "item_optional": false,
              "item_default": "::1"
            },
            {
              "item_name": "port",
              "item_type": "integer",
              "item_optional": false,
              "item_default": 53
            }
          ]
        }
      },
      {
        "item_name": "listen_on",
        "item_type": "list",
        "item_optional": false,
        "item_default": [
          {
            "address": "::1",
            "port": 53
          },
          {
            "address": "127.0.0.1",
            "port": 53
          }
        ],
        "list_item_spec": {
          "item_name": "address",
          "item_type": "map",
          "item_optional": false,
          "item_default": {},
          "map_item_spec": [
            {
              "item_name": "address",
              "item_type": "string",
              "item_optional": false,
              "item_default": "::1"
            },
            {
              "item_name": "port",
              "item_type": "integer",
              "item_optional": false,
              "item_default": 53
            }
          ]
        }
      },
      {
        "item_name": "query_acl",
        "item_type": "list",
        "item_optional": false,
        "item_default": [
          {
            "action": "ACCEPT",
            "from": "127.0.0.1"
          },
          {
            "action": "ACCEPT",
            "from": "::1"
          }
        ],
        "list_item_spec": {
          "item_name": "rule",
          "item_type": "any",
          "item_optional": false,
          "item_default": {"action": "REJECT"}
        }
      }
    ],
    "commands": [
      {
        "command_name": "shutdown",
        "command_description": "Shut down recursive DNS server",
        "command_args": [
          {
            "item_name": "pid",
            "item_type": "integer",
            "item_optional": true
          }
        ]
      }
    ]
  }
}

