{
  "name": "openwrt",
  "version": "0.0.20",
  "description": "A Pulumi provider dynamically bridged from openwrt.",
  "attribution": "This Pulumi package is based on the [`openwrt` Terraform Provider](https://github.com/joneshf/terraform-provider-openwrt).",
  "repository": "https://github.com/joneshf/terraform-provider-openwrt",
  "publisher": "joneshf",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "compatibility": "tfbridge20",
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true
    },
    "go": {
      "importBasePath": "github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt",
      "rootPackageName": "openwrt",
      "liftSingleValueMethodReturns": true,
      "generateExtraInputTypes": true,
      "respectSchemaVersion": true
    },
    "java": {
      "basePackage": "",
      "buildFiles": "",
      "gradleNexusPublishPluginVersion": "",
      "gradleTest": ""
    },
    "nodejs": {
      "packageDescription": "A Pulumi provider dynamically bridged from openwrt.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/joneshf/terraform-provider-openwrt)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-openwrt` repo](https://github.com/joneshf/terraform-provider-openwrt/issues).",
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true,
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true
    },
    "python": {
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/joneshf/terraform-provider-openwrt)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-openwrt` repo](https://github.com/joneshf/terraform-provider-openwrt/issues).",
      "compatibility": "tfbridge20",
      "respectSchemaVersion": true,
      "pyproject": {
        "enabled": true
      }
    }
  },
  "config": {
    "variables": {
      "hostname": {
        "type": "string",
        "description": "The hostname to use. Defaults to \"192.168.1.1\".\n"
      },
      "password": {
        "type": "string",
        "description": "The password to use. Defaults to \"\".\n",
        "secret": true
      },
      "port": {
        "type": "number",
        "description": "The port to use. Defaults to 80.\n"
      },
      "scheme": {
        "type": "string",
        "description": "The URI scheme to use. Defaults to \"http\".\n"
      },
      "username": {
        "type": "string",
        "description": "The username to use. Defaults to \"root\".\n"
      }
    }
  },
  "provider": {
    "description": "The provider type for the openwrt package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
    "properties": {
      "hostname": {
        "type": "string",
        "description": "The hostname to use. Defaults to \"192.168.1.1\".\n"
      },
      "password": {
        "type": "string",
        "description": "The password to use. Defaults to \"\".\n",
        "secret": true
      },
      "scheme": {
        "type": "string",
        "description": "The URI scheme to use. Defaults to \"http\".\n"
      },
      "username": {
        "type": "string",
        "description": "The username to use. Defaults to \"root\".\n"
      }
    },
    "type": "object",
    "inputProperties": {
      "hostname": {
        "type": "string",
        "description": "The hostname to use. Defaults to \"192.168.1.1\".\n"
      },
      "password": {
        "type": "string",
        "description": "The password to use. Defaults to \"\".\n",
        "secret": true
      },
      "port": {
        "type": "number",
        "description": "The port to use. Defaults to 80.\n"
      },
      "scheme": {
        "type": "string",
        "description": "The URI scheme to use. Defaults to \"http\".\n"
      },
      "username": {
        "type": "string",
        "description": "The username to use. Defaults to \"root\".\n"
      }
    }
  },
  "resources": {
    "openwrt:index/dhcpDhcp:DhcpDhcp": {
      "description": "Per interface lease pools and settings for serving DHCP requests.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst brTesting = new openwrt.NetworkDevice(\"brTesting\", {\n    networkDeviceId: \"br_testing\",\n    ports: [\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type: \"bridge\",\n});\nconst testingNetworkInterface = new openwrt.NetworkInterface(\"testingNetworkInterface\", {\n    device: brTesting.name,\n    dns: [\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    networkInterfaceId: \"testing\",\n    ipaddr: \"192.168.3.1\",\n    netmask: \"255.255.255.0\",\n    proto: \"static\",\n});\nconst testingDhcpDhcp = new openwrt.DhcpDhcp(\"testingDhcpDhcp\", {\n    dhcpv4: \"server\",\n    dhcpv6: \"server\",\n    dhcpDhcpId: \"testing\",\n    \"interface\": testingNetworkInterface.networkInterfaceId,\n    leasetime: \"12h\",\n    limit: 150,\n    raFlags: [\n        \"managed-config\",\n        \"other-config\",\n    ],\n    start: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nbr_testing = openwrt.NetworkDevice(\"brTesting\",\n    network_device_id=\"br_testing\",\n    ports=[\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type=\"bridge\")\ntesting_network_interface = openwrt.NetworkInterface(\"testingNetworkInterface\",\n    device=br_testing.name,\n    dns=[\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    network_interface_id=\"testing\",\n    ipaddr=\"192.168.3.1\",\n    netmask=\"255.255.255.0\",\n    proto=\"static\")\ntesting_dhcp_dhcp = openwrt.DhcpDhcp(\"testingDhcpDhcp\",\n    dhcpv4=\"server\",\n    dhcpv6=\"server\",\n    dhcp_dhcp_id=\"testing\",\n    interface=testing_network_interface.network_interface_id,\n    leasetime=\"12h\",\n    limit=150,\n    ra_flags=[\n        \"managed-config\",\n        \"other-config\",\n    ],\n    start=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var brTesting = new Openwrt.NetworkDevice(\"brTesting\", new()\n    {\n        NetworkDeviceId = \"br_testing\",\n        Ports = new[]\n        {\n            \"eth0\",\n            \"eth1\",\n            \"eth2.20\",\n        },\n        Type = \"bridge\",\n    });\n\n    var testingNetworkInterface = new Openwrt.NetworkInterface(\"testingNetworkInterface\", new()\n    {\n        Device = brTesting.Name,\n        Dns = new[]\n        {\n            \"9.9.9.9\",\n            \"1.1.1.1\",\n        },\n        NetworkInterfaceId = \"testing\",\n        Ipaddr = \"192.168.3.1\",\n        Netmask = \"255.255.255.0\",\n        Proto = \"static\",\n    });\n\n    var testingDhcpDhcp = new Openwrt.DhcpDhcp(\"testingDhcpDhcp\", new()\n    {\n        Dhcpv4 = \"server\",\n        Dhcpv6 = \"server\",\n        DhcpDhcpId = \"testing\",\n        Interface = testingNetworkInterface.NetworkInterfaceId,\n        Leasetime = \"12h\",\n        Limit = 150,\n        RaFlags = new[]\n        {\n            \"managed-config\",\n            \"other-config\",\n        },\n        Start = 100,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbrTesting, err := openwrt.NewNetworkDevice(ctx, \"brTesting\", &openwrt.NetworkDeviceArgs{\n\t\t\tNetworkDeviceId: pulumi.String(\"br_testing\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"eth0\"),\n\t\t\t\tpulumi.String(\"eth1\"),\n\t\t\t\tpulumi.String(\"eth2.20\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"bridge\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestingNetworkInterface, err := openwrt.NewNetworkInterface(ctx, \"testingNetworkInterface\", &openwrt.NetworkInterfaceArgs{\n\t\t\tDevice: brTesting.Name,\n\t\t\tDns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"9.9.9.9\"),\n\t\t\t\tpulumi.String(\"1.1.1.1\"),\n\t\t\t},\n\t\t\tNetworkInterfaceId: pulumi.String(\"testing\"),\n\t\t\tIpaddr:             pulumi.String(\"192.168.3.1\"),\n\t\t\tNetmask:            pulumi.String(\"255.255.255.0\"),\n\t\t\tProto:              pulumi.String(\"static\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = openwrt.NewDhcpDhcp(ctx, \"testingDhcpDhcp\", &openwrt.DhcpDhcpArgs{\n\t\t\tDhcpv4:     pulumi.String(\"server\"),\n\t\t\tDhcpv6:     pulumi.String(\"server\"),\n\t\t\tDhcpDhcpId: pulumi.String(\"testing\"),\n\t\t\tInterface:  testingNetworkInterface.NetworkInterfaceId,\n\t\t\tLeasetime:  pulumi.String(\"12h\"),\n\t\t\tLimit:      pulumi.Float64(150),\n\t\t\tRaFlags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"managed-config\"),\n\t\t\t\tpulumi.String(\"other-config\"),\n\t\t\t},\n\t\t\tStart: pulumi.Float64(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkDevice;\nimport com.pulumi.openwrt.NetworkDeviceArgs;\nimport com.pulumi.openwrt.NetworkInterface;\nimport com.pulumi.openwrt.NetworkInterfaceArgs;\nimport com.pulumi.openwrt.DhcpDhcp;\nimport com.pulumi.openwrt.DhcpDhcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var brTesting = new NetworkDevice(\"brTesting\", NetworkDeviceArgs.builder()\n            .networkDeviceId(\"br_testing\")\n            .ports(            \n                \"eth0\",\n                \"eth1\",\n                \"eth2.20\")\n            .type(\"bridge\")\n            .build());\n\n        var testingNetworkInterface = new NetworkInterface(\"testingNetworkInterface\", NetworkInterfaceArgs.builder()\n            .device(brTesting.name())\n            .dns(            \n                \"9.9.9.9\",\n                \"1.1.1.1\")\n            .networkInterfaceId(\"testing\")\n            .ipaddr(\"192.168.3.1\")\n            .netmask(\"255.255.255.0\")\n            .proto(\"static\")\n            .build());\n\n        var testingDhcpDhcp = new DhcpDhcp(\"testingDhcpDhcp\", DhcpDhcpArgs.builder()\n            .dhcpv4(\"server\")\n            .dhcpv6(\"server\")\n            .dhcpDhcpId(\"testing\")\n            .interface_(testingNetworkInterface.networkInterfaceId())\n            .leasetime(\"12h\")\n            .limit(150)\n            .raFlags(            \n                \"managed-config\",\n                \"other-config\")\n            .start(100)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  brTesting:\n    type: openwrt:NetworkDevice\n    properties:\n      networkDeviceId: br_testing\n      ports:\n        - eth0\n        - eth1\n        - eth2.20\n      type: bridge\n  testingNetworkInterface:\n    type: openwrt:NetworkInterface\n    properties:\n      device: ${brTesting.name}\n      dns:\n        - 9.9.9.9\n        - 1.1.1.1\n      networkInterfaceId: testing\n      ipaddr: 192.168.3.1\n      netmask: 255.255.255.0\n      proto: static\n  testingDhcpDhcp:\n    type: openwrt:DhcpDhcp\n    properties:\n      dhcpv4: server\n      dhcpv6: server\n      dhcpDhcpId: testing\n      interface: ${testingNetworkInterface.networkInterfaceId}\n      leasetime: 12h\n      limit: 150\n      raFlags:\n        - managed-config\n        - other-config\n      start: 100\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"dhcp\", \"dhcp\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({name: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"name\": \"lan\",\n\n  },\n\n  {\n\n    \"name\": \"guest\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/dhcpDhcp:DhcpDhcp lan lan\n```\n\n",
      "properties": {
        "dhcpDhcpId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "dhcpv4": {
          "type": "string",
          "description": "The mode of the DHCPv4 server. Must be one of: \"disabled\", \"server\".\n"
        },
        "dhcpv6": {
          "type": "string",
          "description": "The mode of the DHCPv6 server. Must be one of: \"disabled\", \"relay\", \"server\".\n"
        },
        "force": {
          "type": "boolean",
          "description": "Forces DHCP serving on the specified interface even if another DHCP server is detected on the same network segment.\n"
        },
        "ignore": {
          "type": "boolean",
          "description": "Specifies whether dnsmasq should ignore this pool.\n"
        },
        "interface": {
          "type": "string"
        },
        "leasetime": {
          "type": "string",
          "description": "The lease time of addresses handed out to clients. E.g. `12h`, or `30m`. Required if `ignore` is not `true`.\n"
        },
        "limit": {
          "type": "number",
          "description": "Specifies the size of the address pool. E.g. With start = 100, and limit = 150, the maximum address will be 249. Required if `ignore` is not `true`.\n"
        },
        "ra": {
          "type": "string",
          "description": "The mode of Router Advertisements. Must be one of: \"disabled\", \"relay\", \"server\".\n"
        },
        "raFlags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Router Advertisement flags to include in messages. Must be one of: \"home-agent\", \"managed-config\", \"none\", \"other-config\".\n"
        },
        "start": {
          "type": "number",
          "description": "Specifies the offset from the network address of the underlying interface to calculate the minimum address that may be leased to clients. It may be greater than 255 to span subnets. Required if `ignore` is not `true`.\n"
        }
      },
      "type": "object",
      "required": [
        "dhcpDhcpId",
        "dhcpv4",
        "dhcpv6",
        "force",
        "ignore",
        "interface",
        "leasetime",
        "limit",
        "ra",
        "raFlags",
        "start"
      ],
      "inputProperties": {
        "dhcpDhcpId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "dhcpv4": {
          "type": "string",
          "description": "The mode of the DHCPv4 server. Must be one of: \"disabled\", \"server\".\n"
        },
        "dhcpv6": {
          "type": "string",
          "description": "The mode of the DHCPv6 server. Must be one of: \"disabled\", \"relay\", \"server\".\n"
        },
        "force": {
          "type": "boolean",
          "description": "Forces DHCP serving on the specified interface even if another DHCP server is detected on the same network segment.\n"
        },
        "ignore": {
          "type": "boolean",
          "description": "Specifies whether dnsmasq should ignore this pool.\n"
        },
        "interface": {
          "type": "string"
        },
        "leasetime": {
          "type": "string",
          "description": "The lease time of addresses handed out to clients. E.g. `12h`, or `30m`. Required if `ignore` is not `true`.\n"
        },
        "limit": {
          "type": "number",
          "description": "Specifies the size of the address pool. E.g. With start = 100, and limit = 150, the maximum address will be 249. Required if `ignore` is not `true`.\n"
        },
        "ra": {
          "type": "string",
          "description": "The mode of Router Advertisements. Must be one of: \"disabled\", \"relay\", \"server\".\n"
        },
        "raFlags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Router Advertisement flags to include in messages. Must be one of: \"home-agent\", \"managed-config\", \"none\", \"other-config\".\n"
        },
        "start": {
          "type": "number",
          "description": "Specifies the offset from the network address of the underlying interface to calculate the minimum address that may be leased to clients. It may be greater than 255 to span subnets. Required if `ignore` is not `true`.\n"
        }
      },
      "requiredInputs": [
        "dhcpDhcpId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DhcpDhcp resources.\n",
        "properties": {
          "dhcpDhcpId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "dhcpv4": {
            "type": "string",
            "description": "The mode of the DHCPv4 server. Must be one of: \"disabled\", \"server\".\n"
          },
          "dhcpv6": {
            "type": "string",
            "description": "The mode of the DHCPv6 server. Must be one of: \"disabled\", \"relay\", \"server\".\n"
          },
          "force": {
            "type": "boolean",
            "description": "Forces DHCP serving on the specified interface even if another DHCP server is detected on the same network segment.\n"
          },
          "ignore": {
            "type": "boolean",
            "description": "Specifies whether dnsmasq should ignore this pool.\n"
          },
          "interface": {
            "type": "string"
          },
          "leasetime": {
            "type": "string",
            "description": "The lease time of addresses handed out to clients. E.g. `12h`, or `30m`. Required if `ignore` is not `true`.\n"
          },
          "limit": {
            "type": "number",
            "description": "Specifies the size of the address pool. E.g. With start = 100, and limit = 150, the maximum address will be 249. Required if `ignore` is not `true`.\n"
          },
          "ra": {
            "type": "string",
            "description": "The mode of Router Advertisements. Must be one of: \"disabled\", \"relay\", \"server\".\n"
          },
          "raFlags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Router Advertisement flags to include in messages. Must be one of: \"home-agent\", \"managed-config\", \"none\", \"other-config\".\n"
          },
          "start": {
            "type": "number",
            "description": "Specifies the offset from the network address of the underlying interface to calculate the minimum address that may be leased to clients. It may be greater than 255 to span subnets. Required if `ignore` is not `true`.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/dhcpDnsmasq:DhcpDnsmasq": {
      "description": "A lightweight DHCP and caching DNS server.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst _this = new openwrt.DhcpDnsmasq(\"this\", {\n    domain: \"testing\",\n    expandhosts: true,\n    dhcpDnsmasqId: \"testing\",\n    local: \"/testing/\",\n    rebindLocalhost: true,\n    rebindProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.DhcpDnsmasq(\"this\",\n    domain=\"testing\",\n    expandhosts=True,\n    dhcp_dnsmasq_id=\"testing\",\n    local=\"/testing/\",\n    rebind_localhost=True,\n    rebind_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var @this = new Openwrt.DhcpDnsmasq(\"this\", new()\n    {\n        Domain = \"testing\",\n        Expandhosts = true,\n        DhcpDnsmasqId = \"testing\",\n        Local = \"/testing/\",\n        RebindLocalhost = true,\n        RebindProtection = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewDhcpDnsmasq(ctx, \"this\", &openwrt.DhcpDnsmasqArgs{\n\t\t\tDomain:           pulumi.String(\"testing\"),\n\t\t\tExpandhosts:      pulumi.Bool(true),\n\t\t\tDhcpDnsmasqId:    pulumi.String(\"testing\"),\n\t\t\tLocal:            pulumi.String(\"/testing/\"),\n\t\t\tRebindLocalhost:  pulumi.Bool(true),\n\t\t\tRebindProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.DhcpDnsmasq;\nimport com.pulumi.openwrt.DhcpDnsmasqArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new DhcpDnsmasq(\"this\", DhcpDnsmasqArgs.builder()\n            .domain(\"testing\")\n            .expandhosts(true)\n            .dhcpDnsmasqId(\"testing\")\n            .local(\"/testing/\")\n            .rebindLocalhost(true)\n            .rebindProtection(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: openwrt:DhcpDnsmasq\n    properties:\n      domain: testing\n      expandhosts: true\n      dhcpDnsmasqId: testing\n      local: /testing/\n      rebindLocalhost: true\n      rebindProtection: true\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"dhcp\", \"dnsmasq\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/dhcpDnsmasq:DhcpDnsmasq this cfg123456\n```\n\n",
      "properties": {
        "authoritative": {
          "type": "boolean",
          "description": "Force dnsmasq into authoritative mode. This speeds up DHCP leasing. Used if this is the only server on the network.\n"
        },
        "dhcpDnsmasqId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "domain": {
          "type": "string",
          "description": "DNS domain handed out to DHCP clients.\n"
        },
        "domainneeded": {
          "type": "boolean",
          "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
        },
        "ednspacketMax": {
          "type": "number",
          "description": "Specify the largest EDNS.0 UDP packet which is supported by the DNS forwarder.\n"
        },
        "expandhosts": {
          "type": "boolean",
          "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
        },
        "leasefile": {
          "type": "string",
          "description": "Store DHCP leases in this file.\n"
        },
        "local": {
          "type": "string",
          "description": "Look up DNS entries for this domain from `/etc/hosts`.\n"
        },
        "localiseQueries": {
          "type": "boolean",
          "description": "Choose IP address to match the incoming interface if multiple addresses are assigned to a host name in `/etc/hosts`.\n"
        },
        "localservice": {
          "type": "boolean",
          "description": "Accept DNS queries only from hosts whose address is on a local subnet.\n"
        },
        "readethers": {
          "type": "boolean",
          "description": "Read static lease entries from `/etc/ethers`, re-read on SIGHUP.\n"
        },
        "rebindLocalhost": {
          "type": "boolean",
          "description": "Allows upstream 127.0.0.0/8 responses, required for DNS based blocklist services. Only takes effect if rebind protection is enabled.\n"
        },
        "rebindProtection": {
          "type": "boolean",
          "description": "Enables DNS rebind attack protection by discarding upstream RFC1918 responses.\n"
        },
        "resolvfile": {
          "type": "string",
          "description": "Specifies an alternative resolv file.\n"
        }
      },
      "type": "object",
      "required": [
        "authoritative",
        "dhcpDnsmasqId",
        "domain",
        "domainneeded",
        "ednspacketMax",
        "expandhosts",
        "leasefile",
        "local",
        "localiseQueries",
        "localservice",
        "readethers",
        "rebindLocalhost",
        "rebindProtection",
        "resolvfile"
      ],
      "inputProperties": {
        "authoritative": {
          "type": "boolean",
          "description": "Force dnsmasq into authoritative mode. This speeds up DHCP leasing. Used if this is the only server on the network.\n"
        },
        "dhcpDnsmasqId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "domain": {
          "type": "string",
          "description": "DNS domain handed out to DHCP clients.\n"
        },
        "domainneeded": {
          "type": "boolean",
          "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
        },
        "ednspacketMax": {
          "type": "number",
          "description": "Specify the largest EDNS.0 UDP packet which is supported by the DNS forwarder.\n"
        },
        "expandhosts": {
          "type": "boolean",
          "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
        },
        "leasefile": {
          "type": "string",
          "description": "Store DHCP leases in this file.\n"
        },
        "local": {
          "type": "string",
          "description": "Look up DNS entries for this domain from `/etc/hosts`.\n"
        },
        "localiseQueries": {
          "type": "boolean",
          "description": "Choose IP address to match the incoming interface if multiple addresses are assigned to a host name in `/etc/hosts`.\n"
        },
        "localservice": {
          "type": "boolean",
          "description": "Accept DNS queries only from hosts whose address is on a local subnet.\n"
        },
        "readethers": {
          "type": "boolean",
          "description": "Read static lease entries from `/etc/ethers`, re-read on SIGHUP.\n"
        },
        "rebindLocalhost": {
          "type": "boolean",
          "description": "Allows upstream 127.0.0.0/8 responses, required for DNS based blocklist services. Only takes effect if rebind protection is enabled.\n"
        },
        "rebindProtection": {
          "type": "boolean",
          "description": "Enables DNS rebind attack protection by discarding upstream RFC1918 responses.\n"
        },
        "resolvfile": {
          "type": "string",
          "description": "Specifies an alternative resolv file.\n"
        }
      },
      "requiredInputs": [
        "dhcpDnsmasqId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DhcpDnsmasq resources.\n",
        "properties": {
          "authoritative": {
            "type": "boolean",
            "description": "Force dnsmasq into authoritative mode. This speeds up DHCP leasing. Used if this is the only server on the network.\n"
          },
          "dhcpDnsmasqId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "domain": {
            "type": "string",
            "description": "DNS domain handed out to DHCP clients.\n"
          },
          "domainneeded": {
            "type": "boolean",
            "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
          },
          "ednspacketMax": {
            "type": "number",
            "description": "Specify the largest EDNS.0 UDP packet which is supported by the DNS forwarder.\n"
          },
          "expandhosts": {
            "type": "boolean",
            "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n"
          },
          "leasefile": {
            "type": "string",
            "description": "Store DHCP leases in this file.\n"
          },
          "local": {
            "type": "string",
            "description": "Look up DNS entries for this domain from `/etc/hosts`.\n"
          },
          "localiseQueries": {
            "type": "boolean",
            "description": "Choose IP address to match the incoming interface if multiple addresses are assigned to a host name in `/etc/hosts`.\n"
          },
          "localservice": {
            "type": "boolean",
            "description": "Accept DNS queries only from hosts whose address is on a local subnet.\n"
          },
          "readethers": {
            "type": "boolean",
            "description": "Read static lease entries from `/etc/ethers`, re-read on SIGHUP.\n"
          },
          "rebindLocalhost": {
            "type": "boolean",
            "description": "Allows upstream 127.0.0.0/8 responses, required for DNS based blocklist services. Only takes effect if rebind protection is enabled.\n"
          },
          "rebindProtection": {
            "type": "boolean",
            "description": "Enables DNS rebind attack protection by discarding upstream RFC1918 responses.\n"
          },
          "resolvfile": {
            "type": "string",
            "description": "Specifies an alternative resolv file.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/dhcpDomain:DhcpDomain": {
      "description": "Binds a domain name to an IP address.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = new openwrt.DhcpDomain(\"testing\", {\n    dhcpDomainId: \"testing\",\n    ip: \"192.168.1.50\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.DhcpDomain(\"testing\",\n    dhcp_domain_id=\"testing\",\n    ip=\"192.168.1.50\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var testing = new Openwrt.DhcpDomain(\"testing\", new()\n    {\n        DhcpDomainId = \"testing\",\n        Ip = \"192.168.1.50\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewDhcpDomain(ctx, \"testing\", &openwrt.DhcpDomainArgs{\n\t\t\tDhcpDomainId: pulumi.String(\"testing\"),\n\t\t\tIp:           pulumi.String(\"192.168.1.50\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.DhcpDomain;\nimport com.pulumi.openwrt.DhcpDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testing = new DhcpDomain(\"testing\", DhcpDomainArgs.builder()\n            .dhcpDomainId(\"testing\")\n            .ip(\"192.168.1.50\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testing:\n    type: openwrt:DhcpDomain\n    properties:\n      dhcpDomainId: testing\n      ip: 192.168.1.50\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"dhcp\", \"domain\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/dhcpDomain:DhcpDomain this cfg123456\n```\n\n",
      "properties": {
        "dhcpDomainId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ip": {
          "type": "string",
          "description": "The IP address to be used for this domain.\n"
        },
        "name": {
          "type": "string",
          "description": "Hostname to assign.\n"
        }
      },
      "type": "object",
      "required": [
        "dhcpDomainId",
        "ip",
        "name"
      ],
      "inputProperties": {
        "dhcpDomainId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ip": {
          "type": "string",
          "description": "The IP address to be used for this domain.\n"
        },
        "name": {
          "type": "string",
          "description": "Hostname to assign.\n"
        }
      },
      "requiredInputs": [
        "dhcpDomainId",
        "ip"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DhcpDomain resources.\n",
        "properties": {
          "dhcpDomainId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "ip": {
            "type": "string",
            "description": "The IP address to be used for this domain.\n"
          },
          "name": {
            "type": "string",
            "description": "Hostname to assign.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/dhcpHost:DhcpHost": {
      "description": "Assign a fixed IP address to hosts.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = new openwrt.DhcpHost(\"testing\", {\n    dhcpHostId: \"testing\",\n    ip: \"192.168.1.50\",\n    mac: \"12:34:56:78:90:ab\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.DhcpHost(\"testing\",\n    dhcp_host_id=\"testing\",\n    ip=\"192.168.1.50\",\n    mac=\"12:34:56:78:90:ab\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var testing = new Openwrt.DhcpHost(\"testing\", new()\n    {\n        DhcpHostId = \"testing\",\n        Ip = \"192.168.1.50\",\n        Mac = \"12:34:56:78:90:ab\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewDhcpHost(ctx, \"testing\", &openwrt.DhcpHostArgs{\n\t\t\tDhcpHostId: pulumi.String(\"testing\"),\n\t\t\tIp:         pulumi.String(\"192.168.1.50\"),\n\t\t\tMac:        pulumi.String(\"12:34:56:78:90:ab\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.DhcpHost;\nimport com.pulumi.openwrt.DhcpHostArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testing = new DhcpHost(\"testing\", DhcpHostArgs.builder()\n            .dhcpHostId(\"testing\")\n            .ip(\"192.168.1.50\")\n            .mac(\"12:34:56:78:90:ab\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testing:\n    type: openwrt:DhcpHost\n    properties:\n      dhcpHostId: testing\n      ip: 192.168.1.50\n      mac: 12:34:56:78:90:ab\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"dhcp\", \"host\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/dhcpHost:DhcpHost this cfg123456\n```\n\n",
      "properties": {
        "dhcpHostId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "dns": {
          "type": "boolean",
          "description": "Add static forward and reverse DNS entries for this host.\n"
        },
        "ip": {
          "type": "string",
          "description": "The IP address to be used for this host, or `ignore` to ignore any DHCP request from this host.\n"
        },
        "mac": {
          "type": "string",
          "description": "The hardware address(es) of this host, separated by spaces.\n"
        },
        "name": {
          "type": "string",
          "description": "Hostname to assign.\n"
        }
      },
      "type": "object",
      "required": [
        "dhcpHostId",
        "dns",
        "ip",
        "mac",
        "name"
      ],
      "inputProperties": {
        "dhcpHostId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "dns": {
          "type": "boolean",
          "description": "Add static forward and reverse DNS entries for this host.\n"
        },
        "ip": {
          "type": "string",
          "description": "The IP address to be used for this host, or `ignore` to ignore any DHCP request from this host.\n"
        },
        "mac": {
          "type": "string",
          "description": "The hardware address(es) of this host, separated by spaces.\n"
        },
        "name": {
          "type": "string",
          "description": "Hostname to assign.\n"
        }
      },
      "requiredInputs": [
        "dhcpHostId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DhcpHost resources.\n",
        "properties": {
          "dhcpHostId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "dns": {
            "type": "boolean",
            "description": "Add static forward and reverse DNS entries for this host.\n"
          },
          "ip": {
            "type": "string",
            "description": "The IP address to be used for this host, or `ignore` to ignore any DHCP request from this host.\n"
          },
          "mac": {
            "type": "string",
            "description": "The hardware address(es) of this host, separated by spaces.\n"
          },
          "name": {
            "type": "string",
            "description": "Hostname to assign.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/dhcpOdhcpd:DhcpOdhcpd": {
      "description": "An embedded DHCP/DHCPv6/RA server & NDP relay.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst _this = new openwrt.DhcpOdhcpd(\"this\", {\n    dhcpOdhcpdId: \"testing\",\n    leasefile: \"/tmp/leasefile\",\n    leasetrigger: \"/tmp/leasetrigger\",\n    legacy: true,\n    loglevel: 6,\n    maindhcp: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.DhcpOdhcpd(\"this\",\n    dhcp_odhcpd_id=\"testing\",\n    leasefile=\"/tmp/leasefile\",\n    leasetrigger=\"/tmp/leasetrigger\",\n    legacy=True,\n    loglevel=6,\n    maindhcp=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var @this = new Openwrt.DhcpOdhcpd(\"this\", new()\n    {\n        DhcpOdhcpdId = \"testing\",\n        Leasefile = \"/tmp/leasefile\",\n        Leasetrigger = \"/tmp/leasetrigger\",\n        Legacy = true,\n        Loglevel = 6,\n        Maindhcp = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewDhcpOdhcpd(ctx, \"this\", &openwrt.DhcpOdhcpdArgs{\n\t\t\tDhcpOdhcpdId: pulumi.String(\"testing\"),\n\t\t\tLeasefile:    pulumi.String(\"/tmp/leasefile\"),\n\t\t\tLeasetrigger: pulumi.String(\"/tmp/leasetrigger\"),\n\t\t\tLegacy:       pulumi.Bool(true),\n\t\t\tLoglevel:     pulumi.Float64(6),\n\t\t\tMaindhcp:     pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.DhcpOdhcpd;\nimport com.pulumi.openwrt.DhcpOdhcpdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new DhcpOdhcpd(\"this\", DhcpOdhcpdArgs.builder()\n            .dhcpOdhcpdId(\"testing\")\n            .leasefile(\"/tmp/leasefile\")\n            .leasetrigger(\"/tmp/leasetrigger\")\n            .legacy(true)\n            .loglevel(6)\n            .maindhcp(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: openwrt:DhcpOdhcpd\n    properties:\n      dhcpOdhcpdId: testing\n      leasefile: /tmp/leasefile\n      leasetrigger: /tmp/leasetrigger\n      legacy: true\n      loglevel: 6\n      maindhcp: true\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"dhcp\", \"odhcpd\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/dhcpOdhcpd:DhcpOdhcpd this cfg123456\n```\n\n",
      "properties": {
        "dhcpOdhcpdId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "leasefile": {
          "type": "string",
          "description": "Location of the lease/hostfile for DHCPv4 and DHCPv6.\n"
        },
        "leasetrigger": {
          "type": "string",
          "description": "Location of the lease trigger script.\n"
        },
        "legacy": {
          "type": "boolean",
          "description": "Enable DHCPv4 if the 'dhcp' section constains a `start` option, but no `dhcpv4` option set.\n"
        },
        "loglevel": {
          "type": "number",
          "description": "Syslog level priority (0-7).\n"
        },
        "maindhcp": {
          "type": "boolean",
          "description": "Use odhcpd as the main DHCPv4 service.\n"
        }
      },
      "type": "object",
      "required": [
        "dhcpOdhcpdId",
        "leasefile",
        "leasetrigger",
        "legacy",
        "loglevel",
        "maindhcp"
      ],
      "inputProperties": {
        "dhcpOdhcpdId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "leasefile": {
          "type": "string",
          "description": "Location of the lease/hostfile for DHCPv4 and DHCPv6.\n"
        },
        "leasetrigger": {
          "type": "string",
          "description": "Location of the lease trigger script.\n"
        },
        "legacy": {
          "type": "boolean",
          "description": "Enable DHCPv4 if the 'dhcp' section constains a `start` option, but no `dhcpv4` option set.\n"
        },
        "loglevel": {
          "type": "number",
          "description": "Syslog level priority (0-7).\n"
        },
        "maindhcp": {
          "type": "boolean",
          "description": "Use odhcpd as the main DHCPv4 service.\n"
        }
      },
      "requiredInputs": [
        "dhcpOdhcpdId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DhcpOdhcpd resources.\n",
        "properties": {
          "dhcpOdhcpdId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "leasefile": {
            "type": "string",
            "description": "Location of the lease/hostfile for DHCPv4 and DHCPv6.\n"
          },
          "leasetrigger": {
            "type": "string",
            "description": "Location of the lease trigger script.\n"
          },
          "legacy": {
            "type": "boolean",
            "description": "Enable DHCPv4 if the 'dhcp' section constains a `start` option, but no `dhcpv4` option set.\n"
          },
          "loglevel": {
            "type": "number",
            "description": "Syslog level priority (0-7).\n"
          },
          "maindhcp": {
            "type": "boolean",
            "description": "Use odhcpd as the main DHCPv4 service.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/networkDevice:NetworkDevice": {
      "description": "A physical or virtual \"device\" in OpenWrt jargon. Commonly referred to as an \"interface\" in other networking jargon.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst brTesting = new openwrt.NetworkDevice(\"brTesting\", {\n    networkDeviceId: \"br_testing\",\n    ports: [\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type: \"bridge\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nbr_testing = openwrt.NetworkDevice(\"brTesting\",\n    network_device_id=\"br_testing\",\n    ports=[\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type=\"bridge\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var brTesting = new Openwrt.NetworkDevice(\"brTesting\", new()\n    {\n        NetworkDeviceId = \"br_testing\",\n        Ports = new[]\n        {\n            \"eth0\",\n            \"eth1\",\n            \"eth2.20\",\n        },\n        Type = \"bridge\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewNetworkDevice(ctx, \"brTesting\", &openwrt.NetworkDeviceArgs{\n\t\t\tNetworkDeviceId: pulumi.String(\"br_testing\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"eth0\"),\n\t\t\t\tpulumi.String(\"eth1\"),\n\t\t\t\tpulumi.String(\"eth2.20\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"bridge\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkDevice;\nimport com.pulumi.openwrt.NetworkDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var brTesting = new NetworkDevice(\"brTesting\", NetworkDeviceArgs.builder()\n            .networkDeviceId(\"br_testing\")\n            .ports(            \n                \"eth0\",\n                \"eth1\",\n                \"eth2.20\")\n            .type(\"bridge\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  brTesting:\n    type: openwrt:NetworkDevice\n    properties:\n      networkDeviceId: br_testing\n      ports:\n        - eth0\n        - eth1\n        - eth2.20\n      type: bridge\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id and UCI name from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"network\", \"device\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"], uciName: .name})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg030f15\",\n\n    \"uciName\": \"foo\"\n\n  },\n\n  {\n\n    \"terraformId\": \"cfg040f15\",\n\n    \"uciName\": \"bar\"\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/networkDevice:NetworkDevice foo cfg030f15\n```\n\n",
      "properties": {
        "bridgeEmpty": {
          "type": "boolean",
          "description": "Bring up the bridge device even if no ports are attached\n"
        },
        "dadtransmits": {
          "type": "number",
          "description": "Amount of Duplicate Address Detection probes to send\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 for the device.\n"
        },
        "macaddr": {
          "type": "string",
          "description": "MAC Address of the device.\n"
        },
        "mtu": {
          "type": "number",
          "description": "Maximum Transmissible Unit.\n"
        },
        "mtu6": {
          "type": "number",
          "description": "Maximum Transmissible Unit for IPv6.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the device. This name is referenced in other network configuration.\n"
        },
        "networkDeviceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the wired ports to attach to this bridge.\n"
        },
        "txqueuelen": {
          "type": "number",
          "description": "Transmission queue length.\n"
        },
        "type": {
          "type": "string",
          "description": "The type of device. Currently, only \"bridge\" is supported.\n"
        }
      },
      "type": "object",
      "required": [
        "bridgeEmpty",
        "dadtransmits",
        "ipv6",
        "macaddr",
        "mtu",
        "mtu6",
        "name",
        "networkDeviceId",
        "ports",
        "txqueuelen",
        "type"
      ],
      "inputProperties": {
        "bridgeEmpty": {
          "type": "boolean",
          "description": "Bring up the bridge device even if no ports are attached\n"
        },
        "dadtransmits": {
          "type": "number",
          "description": "Amount of Duplicate Address Detection probes to send\n"
        },
        "ipv6": {
          "type": "boolean",
          "description": "Enable IPv6 for the device.\n"
        },
        "macaddr": {
          "type": "string",
          "description": "MAC Address of the device.\n"
        },
        "mtu": {
          "type": "number",
          "description": "Maximum Transmissible Unit.\n"
        },
        "mtu6": {
          "type": "number",
          "description": "Maximum Transmissible Unit for IPv6.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the device. This name is referenced in other network configuration.\n"
        },
        "networkDeviceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Specifies the wired ports to attach to this bridge.\n"
        },
        "txqueuelen": {
          "type": "number",
          "description": "Transmission queue length.\n"
        },
        "type": {
          "type": "string",
          "description": "The type of device. Currently, only \"bridge\" is supported.\n"
        }
      },
      "requiredInputs": [
        "networkDeviceId",
        "type"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NetworkDevice resources.\n",
        "properties": {
          "bridgeEmpty": {
            "type": "boolean",
            "description": "Bring up the bridge device even if no ports are attached\n"
          },
          "dadtransmits": {
            "type": "number",
            "description": "Amount of Duplicate Address Detection probes to send\n"
          },
          "ipv6": {
            "type": "boolean",
            "description": "Enable IPv6 for the device.\n"
          },
          "macaddr": {
            "type": "string",
            "description": "MAC Address of the device.\n"
          },
          "mtu": {
            "type": "number",
            "description": "Maximum Transmissible Unit.\n"
          },
          "mtu6": {
            "type": "number",
            "description": "Maximum Transmissible Unit for IPv6.\n"
          },
          "name": {
            "type": "string",
            "description": "Name of the device. This name is referenced in other network configuration.\n"
          },
          "networkDeviceId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "ports": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Specifies the wired ports to attach to this bridge.\n"
          },
          "txqueuelen": {
            "type": "number",
            "description": "Transmission queue length.\n"
          },
          "type": {
            "type": "string",
            "description": "The type of device. Currently, only \"bridge\" is supported.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/networkGlobals:NetworkGlobals": {
      "description": "Contains interface-independent options affecting the network configuration in general.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst _this = new openwrt.NetworkGlobals(\"this\", {\n    networkGlobalsId: \"globals\",\n    packetSteering: false,\n    ulaPrefix: \"fd12:3456:789a::/48\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.NetworkGlobals(\"this\",\n    network_globals_id=\"globals\",\n    packet_steering=False,\n    ula_prefix=\"fd12:3456:789a::/48\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var @this = new Openwrt.NetworkGlobals(\"this\", new()\n    {\n        NetworkGlobalsId = \"globals\",\n        PacketSteering = false,\n        UlaPrefix = \"fd12:3456:789a::/48\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewNetworkGlobals(ctx, \"this\", &openwrt.NetworkGlobalsArgs{\n\t\t\tNetworkGlobalsId: pulumi.String(\"globals\"),\n\t\t\tPacketSteering:   pulumi.Bool(false),\n\t\t\tUlaPrefix:        pulumi.String(\"fd12:3456:789a::/48\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkGlobals;\nimport com.pulumi.openwrt.NetworkGlobalsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new NetworkGlobals(\"this\", NetworkGlobalsArgs.builder()\n            .networkGlobalsId(\"globals\")\n            .packetSteering(false)\n            .ulaPrefix(\"fd12:3456:789a::/48\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: openwrt:NetworkGlobals\n    properties:\n      networkGlobalsId: globals\n      packetSteering: false\n      ulaPrefix: fd12:3456:789a::/48\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThere should only be one `network.globals` config.\n\nIt seems to default to the UCI name of `globals`.\n\n```sh\n$ pulumi import openwrt:index/networkGlobals:NetworkGlobals this globals\n```\n\n",
      "properties": {
        "networkGlobalsId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "packetSteering": {
          "type": "boolean",
          "description": "Use every CPU to handle packet traffic.\n"
        },
        "ulaPrefix": {
          "type": "string",
          "description": "IPv6 ULA prefix for this device.\n"
        }
      },
      "type": "object",
      "required": [
        "networkGlobalsId",
        "packetSteering",
        "ulaPrefix"
      ],
      "inputProperties": {
        "networkGlobalsId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "packetSteering": {
          "type": "boolean",
          "description": "Use every CPU to handle packet traffic.\n"
        },
        "ulaPrefix": {
          "type": "string",
          "description": "IPv6 ULA prefix for this device.\n"
        }
      },
      "requiredInputs": [
        "networkGlobalsId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NetworkGlobals resources.\n",
        "properties": {
          "networkGlobalsId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "packetSteering": {
            "type": "boolean",
            "description": "Use every CPU to handle packet traffic.\n"
          },
          "ulaPrefix": {
            "type": "string",
            "description": "IPv6 ULA prefix for this device.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/networkInterface:NetworkInterface": {
      "description": "A logic network.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst brTesting = new openwrt.NetworkDevice(\"brTesting\", {\n    networkDeviceId: \"br_testing\",\n    ports: [\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type: \"bridge\",\n});\nconst testing = new openwrt.NetworkInterface(\"testing\", {\n    device: brTesting.name,\n    dns: [\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    networkInterfaceId: \"testing\",\n    ipaddr: \"192.168.3.1\",\n    netmask: \"255.255.255.0\",\n    proto: \"static\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nbr_testing = openwrt.NetworkDevice(\"brTesting\",\n    network_device_id=\"br_testing\",\n    ports=[\n        \"eth0\",\n        \"eth1\",\n        \"eth2.20\",\n    ],\n    type=\"bridge\")\ntesting = openwrt.NetworkInterface(\"testing\",\n    device=br_testing.name,\n    dns=[\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    network_interface_id=\"testing\",\n    ipaddr=\"192.168.3.1\",\n    netmask=\"255.255.255.0\",\n    proto=\"static\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var brTesting = new Openwrt.NetworkDevice(\"brTesting\", new()\n    {\n        NetworkDeviceId = \"br_testing\",\n        Ports = new[]\n        {\n            \"eth0\",\n            \"eth1\",\n            \"eth2.20\",\n        },\n        Type = \"bridge\",\n    });\n\n    var testing = new Openwrt.NetworkInterface(\"testing\", new()\n    {\n        Device = brTesting.Name,\n        Dns = new[]\n        {\n            \"9.9.9.9\",\n            \"1.1.1.1\",\n        },\n        NetworkInterfaceId = \"testing\",\n        Ipaddr = \"192.168.3.1\",\n        Netmask = \"255.255.255.0\",\n        Proto = \"static\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbrTesting, err := openwrt.NewNetworkDevice(ctx, \"brTesting\", &openwrt.NetworkDeviceArgs{\n\t\t\tNetworkDeviceId: pulumi.String(\"br_testing\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"eth0\"),\n\t\t\t\tpulumi.String(\"eth1\"),\n\t\t\t\tpulumi.String(\"eth2.20\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"bridge\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = openwrt.NewNetworkInterface(ctx, \"testing\", &openwrt.NetworkInterfaceArgs{\n\t\t\tDevice: brTesting.Name,\n\t\t\tDns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"9.9.9.9\"),\n\t\t\t\tpulumi.String(\"1.1.1.1\"),\n\t\t\t},\n\t\t\tNetworkInterfaceId: pulumi.String(\"testing\"),\n\t\t\tIpaddr:             pulumi.String(\"192.168.3.1\"),\n\t\t\tNetmask:            pulumi.String(\"255.255.255.0\"),\n\t\t\tProto:              pulumi.String(\"static\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkDevice;\nimport com.pulumi.openwrt.NetworkDeviceArgs;\nimport com.pulumi.openwrt.NetworkInterface;\nimport com.pulumi.openwrt.NetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var brTesting = new NetworkDevice(\"brTesting\", NetworkDeviceArgs.builder()\n            .networkDeviceId(\"br_testing\")\n            .ports(            \n                \"eth0\",\n                \"eth1\",\n                \"eth2.20\")\n            .type(\"bridge\")\n            .build());\n\n        var testing = new NetworkInterface(\"testing\", NetworkInterfaceArgs.builder()\n            .device(brTesting.name())\n            .dns(            \n                \"9.9.9.9\",\n                \"1.1.1.1\")\n            .networkInterfaceId(\"testing\")\n            .ipaddr(\"192.168.3.1\")\n            .netmask(\"255.255.255.0\")\n            .proto(\"static\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  brTesting:\n    type: openwrt:NetworkDevice\n    properties:\n      networkDeviceId: br_testing\n      ports:\n        - eth0\n        - eth1\n        - eth2.20\n      type: bridge\n  testing:\n    type: openwrt:NetworkInterface\n    properties:\n      device: ${brTesting.name}\n      dns:\n        - 9.9.9.9\n        - 1.1.1.1\n      networkInterfaceId: testing\n      ipaddr: 192.168.3.1\n      netmask: 255.255.255.0\n      proto: static\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id is the same as the UCI name from LuCI's JSON-RPC API.\n\nIt is also generally the lower-cased version of the interface name in LuCI's web UI.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"network\", \"interface\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map(.[\".name\"])'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  \"loopback\",\n\n  \"wan\",\n\n  \"wan6\"\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/networkInterface:NetworkInterface loopback loopback\n```\n\n",
      "properties": {
        "auto": {
          "type": "boolean",
          "description": "Specifies whether to bring up this interface on boot.\n"
        },
        "device": {
          "type": "string"
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables this interface.\n"
        },
        "dns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS servers\n"
        },
        "gateway": {
          "type": "string",
          "description": "Gateway of the interface\n"
        },
        "ip6assign": {
          "type": "number",
          "description": "Delegate a prefix of given length to this interface\n"
        },
        "ipaddr": {
          "type": "string",
          "description": "IP address of the interface\n"
        },
        "macaddr": {
          "type": "string",
          "description": "Override the MAC Address of this interface.\n"
        },
        "mtu": {
          "type": "number",
          "description": "Override the default MTU on this interface.\n"
        },
        "netmask": {
          "type": "string",
          "description": "Netmask of the interface\n"
        },
        "networkInterfaceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "peerdns": {
          "type": "boolean",
          "description": "Use DHCP-provided DNS servers.\n"
        },
        "proto": {
          "type": "string",
          "description": "The protocol type of the interface. Currently, only \"dhcp, and \"static\" are supported.\n"
        },
        "reqaddress": {
          "type": "string",
          "description": "Behavior for requesting address. Can only be one of \"force\", \"try\", or \"none\".\n"
        },
        "reqprefix": {
          "type": "string",
          "description": "Behavior for requesting prefixes. Currently, only \"auto\" is supported.\n"
        }
      },
      "type": "object",
      "required": [
        "auto",
        "device",
        "disabled",
        "dns",
        "gateway",
        "ip6assign",
        "ipaddr",
        "macaddr",
        "mtu",
        "netmask",
        "networkInterfaceId",
        "peerdns",
        "proto",
        "reqaddress",
        "reqprefix"
      ],
      "inputProperties": {
        "auto": {
          "type": "boolean",
          "description": "Specifies whether to bring up this interface on boot.\n"
        },
        "device": {
          "type": "string"
        },
        "disabled": {
          "type": "boolean",
          "description": "Disables this interface.\n"
        },
        "dns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "DNS servers\n"
        },
        "gateway": {
          "type": "string",
          "description": "Gateway of the interface\n"
        },
        "ip6assign": {
          "type": "number",
          "description": "Delegate a prefix of given length to this interface\n"
        },
        "ipaddr": {
          "type": "string",
          "description": "IP address of the interface\n"
        },
        "macaddr": {
          "type": "string",
          "description": "Override the MAC Address of this interface.\n"
        },
        "mtu": {
          "type": "number",
          "description": "Override the default MTU on this interface.\n"
        },
        "netmask": {
          "type": "string",
          "description": "Netmask of the interface\n"
        },
        "networkInterfaceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "peerdns": {
          "type": "boolean",
          "description": "Use DHCP-provided DNS servers.\n"
        },
        "proto": {
          "type": "string",
          "description": "The protocol type of the interface. Currently, only \"dhcp, and \"static\" are supported.\n"
        },
        "reqaddress": {
          "type": "string",
          "description": "Behavior for requesting address. Can only be one of \"force\", \"try\", or \"none\".\n"
        },
        "reqprefix": {
          "type": "string",
          "description": "Behavior for requesting prefixes. Currently, only \"auto\" is supported.\n"
        }
      },
      "requiredInputs": [
        "device",
        "networkInterfaceId",
        "proto"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NetworkInterface resources.\n",
        "properties": {
          "auto": {
            "type": "boolean",
            "description": "Specifies whether to bring up this interface on boot.\n"
          },
          "device": {
            "type": "string"
          },
          "disabled": {
            "type": "boolean",
            "description": "Disables this interface.\n"
          },
          "dns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "DNS servers\n"
          },
          "gateway": {
            "type": "string",
            "description": "Gateway of the interface\n"
          },
          "ip6assign": {
            "type": "number",
            "description": "Delegate a prefix of given length to this interface\n"
          },
          "ipaddr": {
            "type": "string",
            "description": "IP address of the interface\n"
          },
          "macaddr": {
            "type": "string",
            "description": "Override the MAC Address of this interface.\n"
          },
          "mtu": {
            "type": "number",
            "description": "Override the default MTU on this interface.\n"
          },
          "netmask": {
            "type": "string",
            "description": "Netmask of the interface\n"
          },
          "networkInterfaceId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "peerdns": {
            "type": "boolean",
            "description": "Use DHCP-provided DNS servers.\n"
          },
          "proto": {
            "type": "string",
            "description": "The protocol type of the interface. Currently, only \"dhcp, and \"static\" are supported.\n"
          },
          "reqaddress": {
            "type": "string",
            "description": "Behavior for requesting address. Can only be one of \"force\", \"try\", or \"none\".\n"
          },
          "reqprefix": {
            "type": "string",
            "description": "Behavior for requesting prefixes. Currently, only \"auto\" is supported.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/networkSwitch:NetworkSwitch": {
      "description": "Legacy `swconfig` configuration\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = new openwrt.NetworkSwitch(\"testing\", {\n    enableVlan: true,\n    networkSwitchId: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.NetworkSwitch(\"testing\",\n    enable_vlan=True,\n    network_switch_id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var testing = new Openwrt.NetworkSwitch(\"testing\", new()\n    {\n        EnableVlan = true,\n        NetworkSwitchId = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewNetworkSwitch(ctx, \"testing\", &openwrt.NetworkSwitchArgs{\n\t\t\tEnableVlan:      pulumi.Bool(true),\n\t\t\tNetworkSwitchId: pulumi.String(\"testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkSwitch;\nimport com.pulumi.openwrt.NetworkSwitchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testing = new NetworkSwitch(\"testing\", NetworkSwitchArgs.builder()\n            .enableVlan(true)\n            .networkSwitchId(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testing:\n    type: openwrt:NetworkSwitch\n    properties:\n      enableVlan: true\n      networkSwitchId: testing\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nThe name can be found through LuCI's web UI.\n\nIt will be in quotes on `/cgi-bin/luci/admin/network/switch`.\n\nThe page might say:\n\n    Switch \"switch0\"\n\n#\n\nThe \"switch0\" is the name.\n\nThe name can also be found from LuCI's JSON-RPC API.\n\n#\n\nFind the Terraform id and UCI name from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"network\", \"switch\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"], uciName: .name})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n    \"uciName\": \"switch0\"\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/networkSwitch:NetworkSwitch switch0 cfg123456\n```\n\n",
      "properties": {
        "enableMirrorRx": {
          "type": "boolean",
          "description": "Mirror received packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
        },
        "enableMirrorTx": {
          "type": "boolean",
          "description": "Mirror transmitted packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
        },
        "enableVlan": {
          "type": "boolean",
          "description": "Enables VLAN functionality.\n"
        },
        "mirrorMonitorPort": {
          "type": "number",
          "description": "Switch port to which packets are mirrored.\n"
        },
        "mirrorSourcePort": {
          "type": "number",
          "description": "Switch port from which packets are mirrored.\n"
        },
        "name": {
          "type": "string"
        },
        "networkSwitchId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "reset": {
          "type": "boolean",
          "description": "Reset the switch.\n"
        }
      },
      "type": "object",
      "required": [
        "enableMirrorRx",
        "enableMirrorTx",
        "enableVlan",
        "mirrorMonitorPort",
        "mirrorSourcePort",
        "name",
        "networkSwitchId",
        "reset"
      ],
      "inputProperties": {
        "enableMirrorRx": {
          "type": "boolean",
          "description": "Mirror received packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
        },
        "enableMirrorTx": {
          "type": "boolean",
          "description": "Mirror transmitted packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
        },
        "enableVlan": {
          "type": "boolean",
          "description": "Enables VLAN functionality.\n"
        },
        "mirrorMonitorPort": {
          "type": "number",
          "description": "Switch port to which packets are mirrored.\n"
        },
        "mirrorSourcePort": {
          "type": "number",
          "description": "Switch port from which packets are mirrored.\n"
        },
        "name": {
          "type": "string"
        },
        "networkSwitchId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "reset": {
          "type": "boolean",
          "description": "Reset the switch.\n"
        }
      },
      "requiredInputs": [
        "networkSwitchId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NetworkSwitch resources.\n",
        "properties": {
          "enableMirrorRx": {
            "type": "boolean",
            "description": "Mirror received packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
          },
          "enableMirrorTx": {
            "type": "boolean",
            "description": "Mirror transmitted packets from the `mirror_source_port` to the `mirror_monitor_port`.\n"
          },
          "enableVlan": {
            "type": "boolean",
            "description": "Enables VLAN functionality.\n"
          },
          "mirrorMonitorPort": {
            "type": "number",
            "description": "Switch port to which packets are mirrored.\n"
          },
          "mirrorSourcePort": {
            "type": "number",
            "description": "Switch port from which packets are mirrored.\n"
          },
          "name": {
            "type": "string"
          },
          "networkSwitchId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "reset": {
            "type": "boolean",
            "description": "Reset the switch.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/networkSwitchVlan:NetworkSwitchVlan": {
      "description": "Legacy VLAN configuration\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testingNetworkSwitch = new openwrt.NetworkSwitch(\"testingNetworkSwitch\", {\n    enableVlan: true,\n    networkSwitchId: \"testing\",\n});\nconst testingNetworkSwitchVlan = new openwrt.NetworkSwitchVlan(\"testingNetworkSwitchVlan\", {\n    device: testingNetworkSwitch.name,\n    networkSwitchVlanId: \"testing\",\n    ports: \"0t 1t\",\n    vid: 10,\n    vlan: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting_network_switch = openwrt.NetworkSwitch(\"testingNetworkSwitch\",\n    enable_vlan=True,\n    network_switch_id=\"testing\")\ntesting_network_switch_vlan = openwrt.NetworkSwitchVlan(\"testingNetworkSwitchVlan\",\n    device=testing_network_switch.name,\n    network_switch_vlan_id=\"testing\",\n    ports=\"0t 1t\",\n    vid=10,\n    vlan=2)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var testingNetworkSwitch = new Openwrt.NetworkSwitch(\"testingNetworkSwitch\", new()\n    {\n        EnableVlan = true,\n        NetworkSwitchId = \"testing\",\n    });\n\n    var testingNetworkSwitchVlan = new Openwrt.NetworkSwitchVlan(\"testingNetworkSwitchVlan\", new()\n    {\n        Device = testingNetworkSwitch.Name,\n        NetworkSwitchVlanId = \"testing\",\n        Ports = \"0t 1t\",\n        Vid = 10,\n        Vlan = 2,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestingNetworkSwitch, err := openwrt.NewNetworkSwitch(ctx, \"testingNetworkSwitch\", &openwrt.NetworkSwitchArgs{\n\t\t\tEnableVlan:      pulumi.Bool(true),\n\t\t\tNetworkSwitchId: pulumi.String(\"testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = openwrt.NewNetworkSwitchVlan(ctx, \"testingNetworkSwitchVlan\", &openwrt.NetworkSwitchVlanArgs{\n\t\t\tDevice:              testingNetworkSwitch.Name,\n\t\t\tNetworkSwitchVlanId: pulumi.String(\"testing\"),\n\t\t\tPorts:               pulumi.String(\"0t 1t\"),\n\t\t\tVid:                 pulumi.Float64(10),\n\t\t\tVlan:                pulumi.Float64(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkSwitch;\nimport com.pulumi.openwrt.NetworkSwitchArgs;\nimport com.pulumi.openwrt.NetworkSwitchVlan;\nimport com.pulumi.openwrt.NetworkSwitchVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var testingNetworkSwitch = new NetworkSwitch(\"testingNetworkSwitch\", NetworkSwitchArgs.builder()\n            .enableVlan(true)\n            .networkSwitchId(\"testing\")\n            .build());\n\n        var testingNetworkSwitchVlan = new NetworkSwitchVlan(\"testingNetworkSwitchVlan\", NetworkSwitchVlanArgs.builder()\n            .device(testingNetworkSwitch.name())\n            .networkSwitchVlanId(\"testing\")\n            .ports(\"0t 1t\")\n            .vid(\"10\")\n            .vlan(\"2\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  testingNetworkSwitch:\n    type: openwrt:NetworkSwitch\n    properties:\n      enableVlan: true\n      networkSwitchId: testing\n  testingNetworkSwitchVlan:\n    type: openwrt:NetworkSwitchVlan\n    properties:\n      device: ${testingNetworkSwitch.name}\n      networkSwitchVlanId: testing\n      ports: 0t 1t\n      vid: '10'\n      vlan: '2'\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"network\", \"switch_vlan\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  },\n\n  {\n\n    \"terraformId\": \"cfg123457\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/networkSwitchVlan:NetworkSwitchVlan administration cfg123456\n```\n\n",
      "properties": {
        "description": {
          "type": "string",
          "description": "A human-readable description of the VLAN configuration.\n"
        },
        "device": {
          "type": "string",
          "description": "The switch to configure.\n"
        },
        "networkSwitchVlanId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ports": {
          "type": "string",
          "description": "A string of space-separated port indicies that should be associated with the VLAN. Adding the suffix `\"t\"` to a port indicates that egress packets should be tagged, for example `\"0 1 3t 5t\"`.\n"
        },
        "vid": {
          "type": "number",
          "description": "The VLAN tag number to use.\n"
        },
        "vlan": {
          "type": "number",
          "description": "The VLAN \"table index\" to configure. This index corresponds to the order on LuCI's UI\n"
        }
      },
      "type": "object",
      "required": [
        "description",
        "device",
        "networkSwitchVlanId",
        "ports",
        "vid",
        "vlan"
      ],
      "inputProperties": {
        "description": {
          "type": "string",
          "description": "A human-readable description of the VLAN configuration.\n"
        },
        "device": {
          "type": "string",
          "description": "The switch to configure.\n"
        },
        "networkSwitchVlanId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "ports": {
          "type": "string",
          "description": "A string of space-separated port indicies that should be associated with the VLAN. Adding the suffix `\"t\"` to a port indicates that egress packets should be tagged, for example `\"0 1 3t 5t\"`.\n"
        },
        "vid": {
          "type": "number",
          "description": "The VLAN tag number to use.\n"
        },
        "vlan": {
          "type": "number",
          "description": "The VLAN \"table index\" to configure. This index corresponds to the order on LuCI's UI\n"
        }
      },
      "requiredInputs": [
        "device",
        "networkSwitchVlanId",
        "ports",
        "vlan"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering NetworkSwitchVlan resources.\n",
        "properties": {
          "description": {
            "type": "string",
            "description": "A human-readable description of the VLAN configuration.\n"
          },
          "device": {
            "type": "string",
            "description": "The switch to configure.\n"
          },
          "networkSwitchVlanId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "ports": {
            "type": "string",
            "description": "A string of space-separated port indicies that should be associated with the VLAN. Adding the suffix `\"t\"` to a port indicates that egress packets should be tagged, for example `\"0 1 3t 5t\"`.\n"
          },
          "vid": {
            "type": "number",
            "description": "The VLAN tag number to use.\n"
          },
          "vlan": {
            "type": "number",
            "description": "The VLAN \"table index\" to configure. This index corresponds to the order on LuCI's UI\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/systemSystem:SystemSystem": {
      "description": "Provides system data about an OpenWrt device\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst _this = new openwrt.SystemSystem(\"this\", {\n    hostname: \"OpenWrt\",\n    systemSystemId: \"cfg01e48a\",\n    zonename: \"America/Los Angeles\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.SystemSystem(\"this\",\n    hostname=\"OpenWrt\",\n    system_system_id=\"cfg01e48a\",\n    zonename=\"America/Los Angeles\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var @this = new Openwrt.SystemSystem(\"this\", new()\n    {\n        Hostname = \"OpenWrt\",\n        SystemSystemId = \"cfg01e48a\",\n        Zonename = \"America/Los Angeles\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewSystemSystem(ctx, \"this\", &openwrt.SystemSystemArgs{\n\t\t\tHostname:       pulumi.String(\"OpenWrt\"),\n\t\t\tSystemSystemId: pulumi.String(\"cfg01e48a\"),\n\t\t\tZonename:       pulumi.String(\"America/Los Angeles\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.SystemSystem;\nimport com.pulumi.openwrt.SystemSystemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var this_ = new SystemSystem(\"this\", SystemSystemArgs.builder()\n            .hostname(\"OpenWrt\")\n            .systemSystemId(\"cfg01e48a\")\n            .zonename(\"America/Los Angeles\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  this:\n    type: openwrt:SystemSystem\n    properties:\n      hostname: OpenWrt\n      systemSystemId: cfg01e48a\n      zonename: America/Los Angeles\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nEvery `system.system` seems to have the same UCI name of `cfg01e48a`\n\n```sh\n$ pulumi import openwrt:index/systemSystem:SystemSystem this cfg01e48a\n```\n\n",
      "properties": {
        "conloglevel": {
          "type": "number",
          "description": "The maximum log level for kernel messages to be logged to the console.\n"
        },
        "cronloglevel": {
          "type": "number",
          "description": "The minimum level for cron messages to be logged to syslog.\n"
        },
        "description": {
          "type": "string",
          "description": "The hostname for the system.\n"
        },
        "hostname": {
          "type": "string",
          "description": "A short single-line description for the system.\n"
        },
        "logSize": {
          "type": "number",
          "description": "Size of the file based log buffer in KiB.\n"
        },
        "notes": {
          "type": "string",
          "description": "Multi-line free-form text about the system.\n"
        },
        "systemSystemId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "timezone": {
          "type": "string",
          "description": "The POSIX.1 time zone string. This has no corresponding value in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
        },
        "ttylogin": {
          "type": "boolean",
          "description": "Require authentication for local users to log in the system.\n"
        },
        "zonename": {
          "type": "string",
          "description": "The IANA/Olson time zone string. This corresponds to \"Timezone\" in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
        }
      },
      "type": "object",
      "required": [
        "conloglevel",
        "cronloglevel",
        "description",
        "hostname",
        "logSize",
        "notes",
        "systemSystemId",
        "timezone",
        "ttylogin",
        "zonename"
      ],
      "inputProperties": {
        "conloglevel": {
          "type": "number",
          "description": "The maximum log level for kernel messages to be logged to the console.\n"
        },
        "cronloglevel": {
          "type": "number",
          "description": "The minimum level for cron messages to be logged to syslog.\n"
        },
        "description": {
          "type": "string",
          "description": "The hostname for the system.\n"
        },
        "hostname": {
          "type": "string",
          "description": "A short single-line description for the system.\n"
        },
        "logSize": {
          "type": "number",
          "description": "Size of the file based log buffer in KiB.\n"
        },
        "notes": {
          "type": "string",
          "description": "Multi-line free-form text about the system.\n"
        },
        "systemSystemId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "timezone": {
          "type": "string",
          "description": "The POSIX.1 time zone string. This has no corresponding value in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
        },
        "ttylogin": {
          "type": "boolean",
          "description": "Require authentication for local users to log in the system.\n"
        },
        "zonename": {
          "type": "string",
          "description": "The IANA/Olson time zone string. This corresponds to \"Timezone\" in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
        }
      },
      "requiredInputs": [
        "systemSystemId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering SystemSystem resources.\n",
        "properties": {
          "conloglevel": {
            "type": "number",
            "description": "The maximum log level for kernel messages to be logged to the console.\n"
          },
          "cronloglevel": {
            "type": "number",
            "description": "The minimum level for cron messages to be logged to syslog.\n"
          },
          "description": {
            "type": "string",
            "description": "The hostname for the system.\n"
          },
          "hostname": {
            "type": "string",
            "description": "A short single-line description for the system.\n"
          },
          "logSize": {
            "type": "number",
            "description": "Size of the file based log buffer in KiB.\n"
          },
          "notes": {
            "type": "string",
            "description": "Multi-line free-form text about the system.\n"
          },
          "systemSystemId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "timezone": {
            "type": "string",
            "description": "The POSIX.1 time zone string. This has no corresponding value in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
          },
          "ttylogin": {
            "type": "boolean",
            "description": "Require authentication for local users to log in the system.\n"
          },
          "zonename": {
            "type": "string",
            "description": "The IANA/Olson time zone string. This corresponds to \"Timezone\" in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/wirelessWifiDevice:WirelessWifiDevice": {
      "description": "The physical radio device.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst fiveGhz = new openwrt.WirelessWifiDevice(\"fiveGhz\", {\n    band: \"5g\",\n    channel: \"auto\",\n    wirelessWifiDeviceId: \"cfg123456\",\n    type: \"mac80211\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nfive_ghz = openwrt.WirelessWifiDevice(\"fiveGhz\",\n    band=\"5g\",\n    channel=\"auto\",\n    wireless_wifi_device_id=\"cfg123456\",\n    type=\"mac80211\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var fiveGhz = new Openwrt.WirelessWifiDevice(\"fiveGhz\", new()\n    {\n        Band = \"5g\",\n        Channel = \"auto\",\n        WirelessWifiDeviceId = \"cfg123456\",\n        Type = \"mac80211\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.NewWirelessWifiDevice(ctx, \"fiveGhz\", &openwrt.WirelessWifiDeviceArgs{\n\t\t\tBand:                 pulumi.String(\"5g\"),\n\t\t\tChannel:              pulumi.String(\"auto\"),\n\t\t\tWirelessWifiDeviceId: pulumi.String(\"cfg123456\"),\n\t\t\tType:                 pulumi.String(\"mac80211\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.WirelessWifiDevice;\nimport com.pulumi.openwrt.WirelessWifiDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var fiveGhz = new WirelessWifiDevice(\"fiveGhz\", WirelessWifiDeviceArgs.builder()\n            .band(\"5g\")\n            .channel(\"auto\")\n            .wirelessWifiDeviceId(\"cfg123456\")\n            .type(\"mac80211\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fiveGhz:\n    type: openwrt:WirelessWifiDevice\n    properties:\n      band: 5g\n      channel: auto\n      wirelessWifiDeviceId: cfg123456\n      type: mac80211\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"wireless\", \"wifi-device\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  },\n\n  {\n\n    \"terraformId\": \"cfg123457\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/wirelessWifiDevice:WirelessWifiDevice five_ghz cfg123456\n```\n\n",
      "properties": {
        "band": {
          "type": "string",
          "description": "Channel width. Must be one of: \"2g\", \"5g\", \"6g\".\n"
        },
        "cellDensity": {
          "type": "number",
          "description": "Configures data rates based on the coverage cell density. Must be one of 0, 1, 2, 3.\n"
        },
        "channel": {
          "type": "string",
          "description": "The wireless channel. Currently, only \"auto\" is supported.\n"
        },
        "country": {
          "type": "string",
          "description": "Two-digit country code. E.g. \"US\".\n"
        },
        "htmode": {
          "type": "string",
          "description": "Channel width. Must be one of: \"HE20\", \"HE40\", \"HE80\", \"HE160\", \"HT20\", \"HT40\", \"HT40-\", \"HT40+\", \"NONE\", \"VHT20\", \"VHT40\", \"VHT80\", \"VHT160\".\n"
        },
        "path": {
          "type": "string",
          "description": "Path of the device in `/sys/devices`.\n"
        },
        "type": {
          "type": "string",
          "description": "The type of device. Currently only \"mac80211\" is supported.\n"
        },
        "wirelessWifiDeviceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        }
      },
      "type": "object",
      "required": [
        "band",
        "cellDensity",
        "channel",
        "country",
        "htmode",
        "path",
        "type",
        "wirelessWifiDeviceId"
      ],
      "inputProperties": {
        "band": {
          "type": "string",
          "description": "Channel width. Must be one of: \"2g\", \"5g\", \"6g\".\n"
        },
        "cellDensity": {
          "type": "number",
          "description": "Configures data rates based on the coverage cell density. Must be one of 0, 1, 2, 3.\n"
        },
        "channel": {
          "type": "string",
          "description": "The wireless channel. Currently, only \"auto\" is supported.\n"
        },
        "country": {
          "type": "string",
          "description": "Two-digit country code. E.g. \"US\".\n"
        },
        "htmode": {
          "type": "string",
          "description": "Channel width. Must be one of: \"HE20\", \"HE40\", \"HE80\", \"HE160\", \"HT20\", \"HT40\", \"HT40-\", \"HT40+\", \"NONE\", \"VHT20\", \"VHT40\", \"VHT80\", \"VHT160\".\n"
        },
        "path": {
          "type": "string",
          "description": "Path of the device in `/sys/devices`.\n"
        },
        "type": {
          "type": "string",
          "description": "The type of device. Currently only \"mac80211\" is supported.\n"
        },
        "wirelessWifiDeviceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        }
      },
      "requiredInputs": [
        "channel",
        "type",
        "wirelessWifiDeviceId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering WirelessWifiDevice resources.\n",
        "properties": {
          "band": {
            "type": "string",
            "description": "Channel width. Must be one of: \"2g\", \"5g\", \"6g\".\n"
          },
          "cellDensity": {
            "type": "number",
            "description": "Configures data rates based on the coverage cell density. Must be one of 0, 1, 2, 3.\n"
          },
          "channel": {
            "type": "string",
            "description": "The wireless channel. Currently, only \"auto\" is supported.\n"
          },
          "country": {
            "type": "string",
            "description": "Two-digit country code. E.g. \"US\".\n"
          },
          "htmode": {
            "type": "string",
            "description": "Channel width. Must be one of: \"HE20\", \"HE40\", \"HE80\", \"HE160\", \"HT20\", \"HT40\", \"HT40-\", \"HT40+\", \"NONE\", \"VHT20\", \"VHT40\", \"VHT80\", \"VHT160\".\n"
          },
          "path": {
            "type": "string",
            "description": "Path of the device in `/sys/devices`.\n"
          },
          "type": {
            "type": "string",
            "description": "The type of device. Currently only \"mac80211\" is supported.\n"
          },
          "wirelessWifiDeviceId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object"
      }
    },
    "openwrt:index/wirelessWifiIface:WirelessWifiIface": {
      "description": "A wireless network.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst homeNetworkInterface = new openwrt.NetworkInterface(\"homeNetworkInterface\", {\n    device: \"eth0\",\n    dns: [\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    networkInterfaceId: \"home\",\n    ipaddr: \"192.168.3.1\",\n    netmask: \"255.255.255.0\",\n    proto: \"static\",\n});\nconst fiveGhz = new openwrt.WirelessWifiDevice(\"fiveGhz\", {\n    band: \"5g\",\n    channel: \"auto\",\n    wirelessWifiDeviceId: \"radio0\",\n    type: \"mac80211\",\n});\nconst homeWirelessWifiIface = new openwrt.WirelessWifiIface(\"homeWirelessWifiIface\", {\n    device: fiveGhz.wirelessWifiDeviceId,\n    encryption: \"sae\",\n    wirelessWifiIfaceId: \"wifinet0\",\n    key: \"password\",\n    mode: \"ap\",\n    network: homeNetworkInterface.networkInterfaceId,\n    ssid: \"home\",\n    wpaDisableEapolKeyRetries: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nhome_network_interface = openwrt.NetworkInterface(\"homeNetworkInterface\",\n    device=\"eth0\",\n    dns=[\n        \"9.9.9.9\",\n        \"1.1.1.1\",\n    ],\n    network_interface_id=\"home\",\n    ipaddr=\"192.168.3.1\",\n    netmask=\"255.255.255.0\",\n    proto=\"static\")\nfive_ghz = openwrt.WirelessWifiDevice(\"fiveGhz\",\n    band=\"5g\",\n    channel=\"auto\",\n    wireless_wifi_device_id=\"radio0\",\n    type=\"mac80211\")\nhome_wireless_wifi_iface = openwrt.WirelessWifiIface(\"homeWirelessWifiIface\",\n    device=five_ghz.wireless_wifi_device_id,\n    encryption=\"sae\",\n    wireless_wifi_iface_id=\"wifinet0\",\n    key=\"password\",\n    mode=\"ap\",\n    network=home_network_interface.network_interface_id,\n    ssid=\"home\",\n    wpa_disable_eapol_key_retries=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() => \n{\n    var homeNetworkInterface = new Openwrt.NetworkInterface(\"homeNetworkInterface\", new()\n    {\n        Device = \"eth0\",\n        Dns = new[]\n        {\n            \"9.9.9.9\",\n            \"1.1.1.1\",\n        },\n        NetworkInterfaceId = \"home\",\n        Ipaddr = \"192.168.3.1\",\n        Netmask = \"255.255.255.0\",\n        Proto = \"static\",\n    });\n\n    var fiveGhz = new Openwrt.WirelessWifiDevice(\"fiveGhz\", new()\n    {\n        Band = \"5g\",\n        Channel = \"auto\",\n        WirelessWifiDeviceId = \"radio0\",\n        Type = \"mac80211\",\n    });\n\n    var homeWirelessWifiIface = new Openwrt.WirelessWifiIface(\"homeWirelessWifiIface\", new()\n    {\n        Device = fiveGhz.WirelessWifiDeviceId,\n        Encryption = \"sae\",\n        WirelessWifiIfaceId = \"wifinet0\",\n        Key = \"password\",\n        Mode = \"ap\",\n        Network = homeNetworkInterface.NetworkInterfaceId,\n        Ssid = \"home\",\n        WpaDisableEapolKeyRetries = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thomeNetworkInterface, err := openwrt.NewNetworkInterface(ctx, \"homeNetworkInterface\", &openwrt.NetworkInterfaceArgs{\n\t\t\tDevice: pulumi.String(\"eth0\"),\n\t\t\tDns: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"9.9.9.9\"),\n\t\t\t\tpulumi.String(\"1.1.1.1\"),\n\t\t\t},\n\t\t\tNetworkInterfaceId: pulumi.String(\"home\"),\n\t\t\tIpaddr:             pulumi.String(\"192.168.3.1\"),\n\t\t\tNetmask:            pulumi.String(\"255.255.255.0\"),\n\t\t\tProto:              pulumi.String(\"static\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfiveGhz, err := openwrt.NewWirelessWifiDevice(ctx, \"fiveGhz\", &openwrt.WirelessWifiDeviceArgs{\n\t\t\tBand:                 pulumi.String(\"5g\"),\n\t\t\tChannel:              pulumi.String(\"auto\"),\n\t\t\tWirelessWifiDeviceId: pulumi.String(\"radio0\"),\n\t\t\tType:                 pulumi.String(\"mac80211\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = openwrt.NewWirelessWifiIface(ctx, \"homeWirelessWifiIface\", &openwrt.WirelessWifiIfaceArgs{\n\t\t\tDevice:                    fiveGhz.WirelessWifiDeviceId,\n\t\t\tEncryption:                pulumi.String(\"sae\"),\n\t\t\tWirelessWifiIfaceId:       pulumi.String(\"wifinet0\"),\n\t\t\tKey:                       pulumi.String(\"password\"),\n\t\t\tMode:                      pulumi.String(\"ap\"),\n\t\t\tNetwork:                   homeNetworkInterface.NetworkInterfaceId,\n\t\t\tSsid:                      pulumi.String(\"home\"),\n\t\t\tWpaDisableEapolKeyRetries: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.NetworkInterface;\nimport com.pulumi.openwrt.NetworkInterfaceArgs;\nimport com.pulumi.openwrt.WirelessWifiDevice;\nimport com.pulumi.openwrt.WirelessWifiDeviceArgs;\nimport com.pulumi.openwrt.WirelessWifiIface;\nimport com.pulumi.openwrt.WirelessWifiIfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var homeNetworkInterface = new NetworkInterface(\"homeNetworkInterface\", NetworkInterfaceArgs.builder()\n            .device(\"eth0\")\n            .dns(            \n                \"9.9.9.9\",\n                \"1.1.1.1\")\n            .networkInterfaceId(\"home\")\n            .ipaddr(\"192.168.3.1\")\n            .netmask(\"255.255.255.0\")\n            .proto(\"static\")\n            .build());\n\n        var fiveGhz = new WirelessWifiDevice(\"fiveGhz\", WirelessWifiDeviceArgs.builder()\n            .band(\"5g\")\n            .channel(\"auto\")\n            .wirelessWifiDeviceId(\"radio0\")\n            .type(\"mac80211\")\n            .build());\n\n        var homeWirelessWifiIface = new WirelessWifiIface(\"homeWirelessWifiIface\", WirelessWifiIfaceArgs.builder()\n            .device(fiveGhz.wirelessWifiDeviceId())\n            .encryption(\"sae\")\n            .wirelessWifiIfaceId(\"wifinet0\")\n            .key(\"password\")\n            .mode(\"ap\")\n            .network(homeNetworkInterface.networkInterfaceId())\n            .ssid(\"home\")\n            .wpaDisableEapolKeyRetries(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  homeNetworkInterface:\n    type: openwrt:NetworkInterface\n    properties:\n      device: eth0\n      dns:\n        - 9.9.9.9\n        - 1.1.1.1\n      networkInterfaceId: home\n      ipaddr: 192.168.3.1\n      netmask: 255.255.255.0\n      proto: static\n  fiveGhz:\n    type: openwrt:WirelessWifiDevice\n    properties:\n      band: 5g\n      channel: auto\n      wirelessWifiDeviceId: radio0\n      type: mac80211\n  homeWirelessWifiIface:\n    type: openwrt:WirelessWifiIface\n    properties:\n      device: ${fiveGhz.wirelessWifiDeviceId}\n      encryption: sae\n      wirelessWifiIfaceId: wifinet0\n      key: password\n      mode: ap\n      network: ${homeNetworkInterface.networkInterfaceId}\n      ssid: home\n      wpaDisableEapolKeyRetries: true\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nFind the Terraform id from LuCI's JSON-RPC API.\n\nOne way to find this information is with `curl` and `jq`:\n\n#\n\ncurl \\\n\n    --data '{\"id\": 0, \"method\": \"foreach\", \"params\": [\"wireless\", \"wifi-iface\"]}' \\\n\n    http://192.168.1.1/cgi-bin/luci/rpc/uci?auth=$AUTH_TOKEN \\\n\n    | jq '.result | map({terraformId: .[\".name\"]})'\n\n#\n\nThis command will output something like:\n\n#\n\n[\n\n  {\n\n    \"terraformId\": \"cfg123456\",\n\n  },\n\n  {\n\n    \"terraformId\": \"cfg123457\",\n\n  }\n\n]\n\n#\n\nWe'd then use the information to import the appropriate resource:\n\n```sh\n$ pulumi import openwrt:index/wirelessWifiIface:WirelessWifiIface home_network cfg123456\n```\n\n",
      "properties": {
        "device": {
          "type": "string"
        },
        "encryption": {
          "type": "string",
          "description": "Encryption method. Currently, only PSK encryption methods are supported. Must be one of: \"none\", \"psk\", \"psk2\", \"psk2+aes\", \"psk2+ccmp\", \"psk2+tkip\", \"psk2+tkip+aes\", \"psk2+tkip+ccmp\", \"psk+aes\", \"psk+ccmp\", \"psk-mixed\", \"psk-mixed+aes\", \"psk-mixed+ccmp\", \"psk-mixed+tkip\", \"psk-mixed+tkip+aes\", \"psk-mixed+tkip+ccmp\", \"psk+tkip\", \"psk+tkip+aes\", \"psk+tkip+ccmp\", \"sae\", \"sae-mixed\".\n"
        },
        "isolate": {
          "type": "boolean",
          "description": "Isolate wireless clients from each other.\n"
        },
        "key": {
          "type": "string",
          "description": "The pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long.\n",
          "secret": true
        },
        "mode": {
          "type": "string",
          "description": "The operation mode of the wireless network interface controller.. Currently only \"ap\" is supported.\n"
        },
        "network": {
          "type": "string"
        },
        "ssid": {
          "type": "string",
          "description": "The broadcasted SSID of the wireless network. This is what actual clients will see the network as.\n"
        },
        "wirelessWifiIfaceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "wpaDisableEapolKeyRetries": {
          "type": "boolean",
          "description": "Enable WPA key reinstallation attack (KRACK) workaround. This should be `true` to enable KRACK workaround (you almost surely want this enabled).\n"
        }
      },
      "type": "object",
      "required": [
        "device",
        "encryption",
        "isolate",
        "key",
        "mode",
        "network",
        "ssid",
        "wirelessWifiIfaceId",
        "wpaDisableEapolKeyRetries"
      ],
      "inputProperties": {
        "device": {
          "type": "string"
        },
        "encryption": {
          "type": "string",
          "description": "Encryption method. Currently, only PSK encryption methods are supported. Must be one of: \"none\", \"psk\", \"psk2\", \"psk2+aes\", \"psk2+ccmp\", \"psk2+tkip\", \"psk2+tkip+aes\", \"psk2+tkip+ccmp\", \"psk+aes\", \"psk+ccmp\", \"psk-mixed\", \"psk-mixed+aes\", \"psk-mixed+ccmp\", \"psk-mixed+tkip\", \"psk-mixed+tkip+aes\", \"psk-mixed+tkip+ccmp\", \"psk+tkip\", \"psk+tkip+aes\", \"psk+tkip+ccmp\", \"sae\", \"sae-mixed\".\n"
        },
        "isolate": {
          "type": "boolean",
          "description": "Isolate wireless clients from each other.\n"
        },
        "key": {
          "type": "string",
          "description": "The pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long.\n",
          "secret": true
        },
        "mode": {
          "type": "string",
          "description": "The operation mode of the wireless network interface controller.. Currently only \"ap\" is supported.\n"
        },
        "network": {
          "type": "string"
        },
        "ssid": {
          "type": "string",
          "description": "The broadcasted SSID of the wireless network. This is what actual clients will see the network as.\n"
        },
        "wirelessWifiIfaceId": {
          "type": "string",
          "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
        },
        "wpaDisableEapolKeyRetries": {
          "type": "boolean",
          "description": "Enable WPA key reinstallation attack (KRACK) workaround. This should be `true` to enable KRACK workaround (you almost surely want this enabled).\n"
        }
      },
      "requiredInputs": [
        "device",
        "mode",
        "network",
        "ssid",
        "wirelessWifiIfaceId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering WirelessWifiIface resources.\n",
        "properties": {
          "device": {
            "type": "string"
          },
          "encryption": {
            "type": "string",
            "description": "Encryption method. Currently, only PSK encryption methods are supported. Must be one of: \"none\", \"psk\", \"psk2\", \"psk2+aes\", \"psk2+ccmp\", \"psk2+tkip\", \"psk2+tkip+aes\", \"psk2+tkip+ccmp\", \"psk+aes\", \"psk+ccmp\", \"psk-mixed\", \"psk-mixed+aes\", \"psk-mixed+ccmp\", \"psk-mixed+tkip\", \"psk-mixed+tkip+aes\", \"psk-mixed+tkip+ccmp\", \"psk+tkip\", \"psk+tkip+aes\", \"psk+tkip+ccmp\", \"sae\", \"sae-mixed\".\n"
          },
          "isolate": {
            "type": "boolean",
            "description": "Isolate wireless clients from each other.\n"
          },
          "key": {
            "type": "string",
            "description": "The pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long.\n",
            "secret": true
          },
          "mode": {
            "type": "string",
            "description": "The operation mode of the wireless network interface controller.. Currently only \"ap\" is supported.\n"
          },
          "network": {
            "type": "string"
          },
          "ssid": {
            "type": "string",
            "description": "The broadcasted SSID of the wireless network. This is what actual clients will see the network as.\n"
          },
          "wirelessWifiIfaceId": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          },
          "wpaDisableEapolKeyRetries": {
            "type": "boolean",
            "description": "Enable WPA key reinstallation attack (KRACK) workaround. This should be `true` to enable KRACK workaround (you almost surely want this enabled).\n"
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "openwrt:index/getDhcpDhcp:getDhcpDhcp": {
      "description": "Per interface lease pools and settings for serving DHCP requests.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getDhcpDhcp({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_dhcp_dhcp(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetDhcpDhcp.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupDhcpDhcp(ctx, \u0026openwrt.LookupDhcpDhcpArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetDhcpDhcpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getDhcpDhcp(GetDhcpDhcpArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getDhcpDhcp\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDhcpDhcp.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDhcpDhcp.\n",
        "properties": {
          "dhcpv4": {
            "description": "The mode of the DHCPv4 server. Must be one of: \"disabled\", \"server\".\n",
            "type": "string"
          },
          "dhcpv6": {
            "description": "The mode of the DHCPv6 server. Must be one of: \"disabled\", \"relay\", \"server\".\n",
            "type": "string"
          },
          "force": {
            "description": "Forces DHCP serving on the specified interface even if another DHCP server is detected on the same network segment.\n",
            "type": "boolean"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ignore": {
            "description": "Specifies whether dnsmasq should ignore this pool.\n",
            "type": "boolean"
          },
          "interface": {
            "type": "string"
          },
          "leasetime": {
            "description": "The lease time of addresses handed out to clients. E.g. `12h`, or `30m`. Required if `ignore` is not `true`.\n",
            "type": "string"
          },
          "limit": {
            "description": "Specifies the size of the address pool. E.g. With start = 100, and limit = 150, the maximum address will be 249. Required if `ignore` is not `true`.\n",
            "type": "number"
          },
          "ra": {
            "description": "The mode of Router Advertisements. Must be one of: \"disabled\", \"relay\", \"server\".\n",
            "type": "string"
          },
          "raFlags": {
            "description": "Router Advertisement flags to include in messages. Must be one of: \"home-agent\", \"managed-config\", \"none\", \"other-config\".\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "start": {
            "description": "Specifies the offset from the network address of the underlying interface to calculate the minimum address that may be leased to clients. It may be greater than 255 to span subnets. Required if `ignore` is not `true`.\n",
            "type": "number"
          }
        },
        "required": [
          "dhcpv4",
          "dhcpv6",
          "force",
          "id",
          "ignore",
          "interface",
          "leasetime",
          "limit",
          "ra",
          "raFlags",
          "start"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getDhcpDnsmasq:getDhcpDnsmasq": {
      "description": "A lightweight DHCP and caching DNS server.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getDhcpDnsmasq({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_dhcp_dnsmasq(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetDhcpDnsmasq.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupDhcpDnsmasq(ctx, \u0026openwrt.LookupDhcpDnsmasqArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetDhcpDnsmasqArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getDhcpDnsmasq(GetDhcpDnsmasqArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getDhcpDnsmasq\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDhcpDnsmasq.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDhcpDnsmasq.\n",
        "properties": {
          "authoritative": {
            "description": "Force dnsmasq into authoritative mode. This speeds up DHCP leasing. Used if this is the only server on the network.\n",
            "type": "boolean"
          },
          "domain": {
            "description": "DNS domain handed out to DHCP clients.\n",
            "type": "string"
          },
          "domainneeded": {
            "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n",
            "type": "boolean"
          },
          "ednspacketMax": {
            "description": "Specify the largest EDNS.0 UDP packet which is supported by the DNS forwarder.\n",
            "type": "number"
          },
          "expandhosts": {
            "description": "Never forward queries for plain names, without dots or domain parts, to upstream nameservers.\n",
            "type": "boolean"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "leasefile": {
            "description": "Store DHCP leases in this file.\n",
            "type": "string"
          },
          "local": {
            "description": "Look up DNS entries for this domain from `/etc/hosts`.\n",
            "type": "string"
          },
          "localiseQueries": {
            "description": "Choose IP address to match the incoming interface if multiple addresses are assigned to a host name in `/etc/hosts`.\n",
            "type": "boolean"
          },
          "localservice": {
            "description": "Accept DNS queries only from hosts whose address is on a local subnet.\n",
            "type": "boolean"
          },
          "readethers": {
            "description": "Read static lease entries from `/etc/ethers`, re-read on SIGHUP.\n",
            "type": "boolean"
          },
          "rebindLocalhost": {
            "description": "Allows upstream 127.0.0.0/8 responses, required for DNS based blocklist services. Only takes effect if rebind protection is enabled.\n",
            "type": "boolean"
          },
          "rebindProtection": {
            "description": "Enables DNS rebind attack protection by discarding upstream RFC1918 responses.\n",
            "type": "boolean"
          },
          "resolvfile": {
            "description": "Specifies an alternative resolv file.\n",
            "type": "string"
          }
        },
        "required": [
          "authoritative",
          "domain",
          "domainneeded",
          "ednspacketMax",
          "expandhosts",
          "id",
          "leasefile",
          "local",
          "localiseQueries",
          "localservice",
          "readethers",
          "rebindLocalhost",
          "rebindProtection",
          "resolvfile"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getDhcpDomain:getDhcpDomain": {
      "description": "Binds a domain name to an IP address.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getDhcpDomain({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_dhcp_domain(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetDhcpDomain.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupDhcpDomain(ctx, \u0026openwrt.LookupDhcpDomainArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetDhcpDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getDhcpDomain(GetDhcpDomainArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getDhcpDomain\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDhcpDomain.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDhcpDomain.\n",
        "properties": {
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ip": {
            "description": "The IP address to be used for this domain.\n",
            "type": "string"
          },
          "name": {
            "description": "Hostname to assign.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "ip",
          "name"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getDhcpHost:getDhcpHost": {
      "description": "Assign a fixed IP address to hosts.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getDhcpHost({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_dhcp_host(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetDhcpHost.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupDhcpHost(ctx, \u0026openwrt.LookupDhcpHostArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetDhcpHostArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getDhcpHost(GetDhcpHostArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getDhcpHost\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDhcpHost.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDhcpHost.\n",
        "properties": {
          "dns": {
            "description": "Add static forward and reverse DNS entries for this host.\n",
            "type": "boolean"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ip": {
            "description": "The IP address to be used for this host, or `ignore` to ignore any DHCP request from this host.\n",
            "type": "string"
          },
          "mac": {
            "description": "The hardware address(es) of this host, separated by spaces.\n",
            "type": "string"
          },
          "name": {
            "description": "Hostname to assign.\n",
            "type": "string"
          }
        },
        "required": [
          "dns",
          "id",
          "ip",
          "mac",
          "name"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getDhcpOdhcpd:getDhcpOdhcpd": {
      "description": "An embedded DHCP/DHCPv6/RA server \u0026 NDP relay.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getDhcpOdhcpd({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_dhcp_odhcpd(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetDhcpOdhcpd.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupDhcpOdhcpd(ctx, \u0026openwrt.LookupDhcpOdhcpdArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetDhcpOdhcpdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getDhcpOdhcpd(GetDhcpOdhcpdArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getDhcpOdhcpd\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getDhcpOdhcpd.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getDhcpOdhcpd.\n",
        "properties": {
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "leasefile": {
            "description": "Location of the lease/hostfile for DHCPv4 and DHCPv6.\n",
            "type": "string"
          },
          "leasetrigger": {
            "description": "Location of the lease trigger script.\n",
            "type": "string"
          },
          "legacy": {
            "description": "Enable DHCPv4 if the 'dhcp' section constains a `start` option, but no `dhcpv4` option set.\n",
            "type": "boolean"
          },
          "loglevel": {
            "description": "Syslog level priority (0-7).\n",
            "type": "number"
          },
          "maindhcp": {
            "description": "Use odhcpd as the main DHCPv4 service.\n",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "leasefile",
          "leasetrigger",
          "legacy",
          "loglevel",
          "maindhcp"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getNetworkDevice:getNetworkDevice": {
      "description": "A physical or virtual \"device\" in OpenWrt jargon. Commonly referred to as an \"interface\" in other networking jargon.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst brTesting = openwrt.getNetworkDevice({\n    id: \"br_testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nbr_testing = openwrt.get_network_device(id=\"br_testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var brTesting = Openwrt.GetNetworkDevice.Invoke(new()\n    {\n        Id = \"br_testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupNetworkDevice(ctx, \u0026openwrt.LookupNetworkDeviceArgs{\n\t\t\tId: \"br_testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetNetworkDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var brTesting = OpenwrtFunctions.getNetworkDevice(GetNetworkDeviceArgs.builder()\n            .id(\"br_testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  brTesting:\n    fn::invoke:\n      function: openwrt:getNetworkDevice\n      arguments:\n        id: br_testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNetworkDevice.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNetworkDevice.\n",
        "properties": {
          "bridgeEmpty": {
            "description": "Bring up the bridge device even if no ports are attached\n",
            "type": "boolean"
          },
          "dadtransmits": {
            "description": "Amount of Duplicate Address Detection probes to send\n",
            "type": "number"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ipv6": {
            "description": "Enable IPv6 for the device.\n",
            "type": "boolean"
          },
          "macaddr": {
            "description": "MAC Address of the device.\n",
            "type": "string"
          },
          "mtu": {
            "description": "Maximum Transmissible Unit.\n",
            "type": "number"
          },
          "mtu6": {
            "description": "Maximum Transmissible Unit for IPv6.\n",
            "type": "number"
          },
          "name": {
            "description": "Name of the device. This name is referenced in other network configuration.\n",
            "type": "string"
          },
          "ports": {
            "description": "Specifies the wired ports to attach to this bridge.\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "txqueuelen": {
            "description": "Transmission queue length.\n",
            "type": "number"
          },
          "type": {
            "description": "The type of device. Currently, only \"bridge\" is supported.\n",
            "type": "string"
          }
        },
        "required": [
          "bridgeEmpty",
          "dadtransmits",
          "id",
          "ipv6",
          "macaddr",
          "mtu",
          "mtu6",
          "name",
          "ports",
          "txqueuelen",
          "type"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getNetworkGlobals:getNetworkGlobals": {
      "description": "Contains interface-independent options affecting the network configuration in general.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst this = openwrt.getNetworkGlobals({\n    id: \"globals\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.get_network_globals(id=\"globals\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = Openwrt.GetNetworkGlobals.Invoke(new()\n    {\n        Id = \"globals\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupNetworkGlobals(ctx, \u0026openwrt.LookupNetworkGlobalsArgs{\n\t\t\tId: \"globals\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetNetworkGlobalsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var this = OpenwrtFunctions.getNetworkGlobals(GetNetworkGlobalsArgs.builder()\n            .id(\"globals\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  this:\n    fn::invoke:\n      function: openwrt:getNetworkGlobals\n      arguments:\n        id: globals\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNetworkGlobals.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNetworkGlobals.\n",
        "properties": {
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "packetSteering": {
            "description": "Use every CPU to handle packet traffic.\n",
            "type": "boolean"
          },
          "ulaPrefix": {
            "description": "IPv6 ULA prefix for this device.\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "packetSteering",
          "ulaPrefix"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getNetworkInterface:getNetworkInterface": {
      "description": "A logic network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst brTesting = openwrt.getNetworkInterface({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nbr_testing = openwrt.get_network_interface(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var brTesting = Openwrt.GetNetworkInterface.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupNetworkInterface(ctx, \u0026openwrt.LookupNetworkInterfaceArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetNetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var brTesting = OpenwrtFunctions.getNetworkInterface(GetNetworkInterfaceArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  brTesting:\n    fn::invoke:\n      function: openwrt:getNetworkInterface\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNetworkInterface.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNetworkInterface.\n",
        "properties": {
          "auto": {
            "description": "Specifies whether to bring up this interface on boot.\n",
            "type": "boolean"
          },
          "device": {
            "type": "string"
          },
          "disabled": {
            "description": "Disables this interface.\n",
            "type": "boolean"
          },
          "dns": {
            "description": "DNS servers\n",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "gateway": {
            "description": "Gateway of the interface\n",
            "type": "string"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ip6assign": {
            "description": "Delegate a prefix of given length to this interface\n",
            "type": "number"
          },
          "ipaddr": {
            "description": "IP address of the interface\n",
            "type": "string"
          },
          "macaddr": {
            "description": "Override the MAC Address of this interface.\n",
            "type": "string"
          },
          "mtu": {
            "description": "Override the default MTU on this interface.\n",
            "type": "number"
          },
          "netmask": {
            "description": "Netmask of the interface\n",
            "type": "string"
          },
          "peerdns": {
            "description": "Use DHCP-provided DNS servers.\n",
            "type": "boolean"
          },
          "proto": {
            "description": "The protocol type of the interface. Currently, only \"dhcp, and \"static\" are supported.\n",
            "type": "string"
          },
          "reqaddress": {
            "description": "Behavior for requesting address. Can only be one of \"force\", \"try\", or \"none\".\n",
            "type": "string"
          },
          "reqprefix": {
            "description": "Behavior for requesting prefixes. Currently, only \"auto\" is supported.\n",
            "type": "string"
          }
        },
        "required": [
          "auto",
          "device",
          "disabled",
          "dns",
          "gateway",
          "id",
          "ip6assign",
          "ipaddr",
          "macaddr",
          "mtu",
          "netmask",
          "peerdns",
          "proto",
          "reqaddress",
          "reqprefix"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getNetworkSwitch:getNetworkSwitch": {
      "description": "Legacy `swconfig` configuration\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getNetworkSwitch({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_network_switch(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetNetworkSwitch.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupNetworkSwitch(ctx, \u0026openwrt.LookupNetworkSwitchArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetNetworkSwitchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getNetworkSwitch(GetNetworkSwitchArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getNetworkSwitch\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNetworkSwitch.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNetworkSwitch.\n",
        "properties": {
          "enableMirrorRx": {
            "description": "Mirror received packets from the `mirror_source_port` to the `mirror_monitor_port`.\n",
            "type": "boolean"
          },
          "enableMirrorTx": {
            "description": "Mirror transmitted packets from the `mirror_source_port` to the `mirror_monitor_port`.\n",
            "type": "boolean"
          },
          "enableVlan": {
            "description": "Enables VLAN functionality.\n",
            "type": "boolean"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "mirrorMonitorPort": {
            "description": "Switch port to which packets are mirrored.\n",
            "type": "number"
          },
          "mirrorSourcePort": {
            "description": "Switch port from which packets are mirrored.\n",
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "reset": {
            "description": "Reset the switch.\n",
            "type": "boolean"
          }
        },
        "required": [
          "enableMirrorRx",
          "enableMirrorTx",
          "enableVlan",
          "id",
          "mirrorMonitorPort",
          "mirrorSourcePort",
          "name",
          "reset"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getNetworkSwitchVlan:getNetworkSwitchVlan": {
      "description": "Legacy VLAN configuration\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getNetworkSwitchVlan({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_network_switch_vlan(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetNetworkSwitchVlan.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupNetworkSwitchVlan(ctx, \u0026openwrt.LookupNetworkSwitchVlanArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetNetworkSwitchVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getNetworkSwitchVlan(GetNetworkSwitchVlanArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getNetworkSwitchVlan\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getNetworkSwitchVlan.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getNetworkSwitchVlan.\n",
        "properties": {
          "description": {
            "description": "A human-readable description of the VLAN configuration.\n",
            "type": "string"
          },
          "device": {
            "description": "The switch to configure.\n",
            "type": "string"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "ports": {
            "description": "A string of space-separated port indicies that should be associated with the VLAN. Adding the suffix `\"t\"` to a port indicates that egress packets should be tagged, for example `\"0 1 3t 5t\"`.\n",
            "type": "string"
          },
          "vid": {
            "description": "The VLAN tag number to use.\n",
            "type": "number"
          },
          "vlan": {
            "description": "The VLAN \"table index\" to configure. This index corresponds to the order on LuCI's UI\n",
            "type": "number"
          }
        },
        "required": [
          "description",
          "device",
          "id",
          "ports",
          "vid",
          "vlan"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getSystemSystem:getSystemSystem": {
      "description": "Provides system data about an OpenWrt device\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst this = openwrt.getSystemSystem({\n    id: \"cfg01e48a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\nthis = openwrt.get_system_system(id=\"cfg01e48a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var @this = Openwrt.GetSystemSystem.Invoke(new()\n    {\n        Id = \"cfg01e48a\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupSystemSystem(ctx, \u0026openwrt.LookupSystemSystemArgs{\n\t\t\tId: \"cfg01e48a\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetSystemSystemArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var this = OpenwrtFunctions.getSystemSystem(GetSystemSystemArgs.builder()\n            .id(\"cfg01e48a\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  this:\n    fn::invoke:\n      function: openwrt:getSystemSystem\n      arguments:\n        id: cfg01e48a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getSystemSystem.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getSystemSystem.\n",
        "properties": {
          "conloglevel": {
            "description": "The maximum log level for kernel messages to be logged to the console.\n",
            "type": "number"
          },
          "cronloglevel": {
            "description": "The minimum level for cron messages to be logged to syslog.\n",
            "type": "number"
          },
          "description": {
            "description": "The hostname for the system.\n",
            "type": "string"
          },
          "hostname": {
            "description": "A short single-line description for the system.\n",
            "type": "string"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "logSize": {
            "description": "Size of the file based log buffer in KiB.\n",
            "type": "number"
          },
          "notes": {
            "description": "Multi-line free-form text about the system.\n",
            "type": "string"
          },
          "timezone": {
            "description": "The POSIX.1 time zone string. This has no corresponding value in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n",
            "type": "string"
          },
          "ttylogin": {
            "description": "Require authentication for local users to log in the system.\n",
            "type": "boolean"
          },
          "zonename": {
            "description": "The IANA/Olson time zone string. This corresponds to \"Timezone\" in LuCI. See: https://github.com/openwrt/luci/blob/cd82ccacef78d3bb8b8af6b87dabb9e892e2b2aa/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua.\n",
            "type": "string"
          }
        },
        "required": [
          "conloglevel",
          "cronloglevel",
          "description",
          "hostname",
          "id",
          "logSize",
          "notes",
          "timezone",
          "ttylogin",
          "zonename"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getWirelessWifiDevice:getWirelessWifiDevice": {
      "description": "The physical radio device.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getWirelessWifiDevice({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_wireless_wifi_device(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetWirelessWifiDevice.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupWirelessWifiDevice(ctx, \u0026openwrt.LookupWirelessWifiDeviceArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetWirelessWifiDeviceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getWirelessWifiDevice(GetWirelessWifiDeviceArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getWirelessWifiDevice\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getWirelessWifiDevice.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getWirelessWifiDevice.\n",
        "properties": {
          "band": {
            "description": "Channel width. Must be one of: \"2g\", \"5g\", \"6g\".\n",
            "type": "string"
          },
          "cellDensity": {
            "description": "Configures data rates based on the coverage cell density. Must be one of 0, 1, 2, 3.\n",
            "type": "number"
          },
          "channel": {
            "description": "The wireless channel. Currently, only \"auto\" is supported.\n",
            "type": "string"
          },
          "country": {
            "description": "Two-digit country code. E.g. \"US\".\n",
            "type": "string"
          },
          "htmode": {
            "description": "Channel width. Must be one of: \"HE20\", \"HE40\", \"HE80\", \"HE160\", \"HT20\", \"HT40\", \"HT40-\", \"HT40+\", \"NONE\", \"VHT20\", \"VHT40\", \"VHT80\", \"VHT160\".\n",
            "type": "string"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "path": {
            "description": "Path of the device in `/sys/devices`.\n",
            "type": "string"
          },
          "type": {
            "description": "The type of device. Currently only \"mac80211\" is supported.\n",
            "type": "string"
          }
        },
        "required": [
          "band",
          "cellDensity",
          "channel",
          "country",
          "htmode",
          "id",
          "path",
          "type"
        ],
        "type": "object"
      }
    },
    "openwrt:index/getWirelessWifiIface:getWirelessWifiIface": {
      "description": "A wireless network.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as openwrt from \"@pulumi/openwrt\";\n\nconst testing = openwrt.getWirelessWifiIface({\n    id: \"testing\",\n});\n```\n```python\nimport pulumi\nimport pulumi_openwrt as openwrt\n\ntesting = openwrt.get_wireless_wifi_iface(id=\"testing\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Openwrt = Pulumi.Openwrt;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var testing = Openwrt.GetWirelessWifiIface.Invoke(new()\n    {\n        Id = \"testing\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/openwrt/openwrt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := openwrt.LookupWirelessWifiIface(ctx, \u0026openwrt.LookupWirelessWifiIfaceArgs{\n\t\t\tId: \"testing\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.openwrt.OpenwrtFunctions;\nimport com.pulumi.openwrt.inputs.GetWirelessWifiIfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var testing = OpenwrtFunctions.getWirelessWifiIface(GetWirelessWifiIfaceArgs.builder()\n            .id(\"testing\")\n            .build());\n\n    }\n}\n```\n```yaml\nvariables:\n  testing:\n    fn::invoke:\n      function: openwrt:getWirelessWifiIface\n      arguments:\n        id: testing\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getWirelessWifiIface.\n",
        "properties": {
          "id": {
            "type": "string",
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n"
          }
        },
        "type": "object",
        "required": [
          "id"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getWirelessWifiIface.\n",
        "properties": {
          "device": {
            "type": "string"
          },
          "encryption": {
            "description": "Encryption method. Currently, only PSK encryption methods are supported. Must be one of: \"none\", \"psk\", \"psk2\", \"psk2+aes\", \"psk2+ccmp\", \"psk2+tkip\", \"psk2+tkip+aes\", \"psk2+tkip+ccmp\", \"psk+aes\", \"psk+ccmp\", \"psk-mixed\", \"psk-mixed+aes\", \"psk-mixed+ccmp\", \"psk-mixed+tkip\", \"psk-mixed+tkip+aes\", \"psk-mixed+tkip+ccmp\", \"psk+tkip\", \"psk+tkip+aes\", \"psk+tkip+ccmp\", \"sae\", \"sae-mixed\".\n",
            "type": "string"
          },
          "id": {
            "description": "Name of the section. This name is only used when interacting with UCI directly.\n",
            "type": "string"
          },
          "isolate": {
            "description": "Isolate wireless clients from each other.\n",
            "type": "boolean"
          },
          "key": {
            "description": "The pre-shared passphrase from which the pre-shared key will be derived. The clear text key has to be 8-63 characters long.\n",
            "secret": true,
            "type": "string"
          },
          "mode": {
            "description": "The operation mode of the wireless network interface controller.. Currently only \"ap\" is supported.\n",
            "type": "string"
          },
          "network": {
            "type": "string"
          },
          "ssid": {
            "description": "The broadcasted SSID of the wireless network. This is what actual clients will see the network as.\n",
            "type": "string"
          },
          "wpaDisableEapolKeyRetries": {
            "description": "Enable WPA key reinstallation attack (KRACK) workaround. This should be `true` to enable KRACK workaround (you almost surely want this enabled).\n",
            "type": "boolean"
          }
        },
        "required": [
          "device",
          "encryption",
          "id",
          "isolate",
          "key",
          "mode",
          "network",
          "ssid",
          "wpaDisableEapolKeyRetries"
        ],
        "type": "object"
      }
    }
  },
  "parameterization": {
    "baseProvider": {
      "name": "terraform-provider",
      "version": "0.8.0"
    },
    "parameter": "eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2pvbmVzaGYvb3BlbndydCIsInZlcnNpb24iOiIwLjAuMjAifX0="
  }
}
