python-netgear-switch-library 0.0.post357__tar.gz → 0.0.post359__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/PKG-INFO +1 -1
  2. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/specs/2026-08-02-snmp-surface-findings.md +76 -0
  3. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/_version.py +2 -2
  4. python_netgear_switch_library-0.0.post359/tests/fixtures/http/gsm7252ps_vlan_configuration.js +236 -0
  5. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/.github/workflows/ci.yml +0 -0
  6. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/.github/workflows/deb.yml +0 -0
  7. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/.github/workflows/publish-pypi.yml +0 -0
  8. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/.gitignore +0 -0
  9. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/.readthedocs.yaml +0 -0
  10. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/CLAUDE.md +0 -0
  11. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/LICENSE +0 -0
  12. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/README.md +0 -0
  13. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/RELEASING.md +0 -0
  14. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/debian/changelog +0 -0
  15. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/debian/control +0 -0
  16. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/debian/copyright +0 -0
  17. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/debian/rules +0 -0
  18. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/debian/source/format +0 -0
  19. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/Makefile +0 -0
  20. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_ext/filelinks.py +0 -0
  21. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_ext/support_tables.py +0 -0
  22. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gs105pe.png +0 -0
  23. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gs110emx.png +0 -0
  24. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gs305ep.png +0 -0
  25. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gs728tpp.png +0 -0
  26. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gsm7228ps.jpg +0 -0
  27. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/gsm7252ps.jpg +0 -0
  28. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/m4300-16x.png +0 -0
  29. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/models/m4300-24x.png +0 -0
  30. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/_static/ngsw.css +0 -0
  31. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/cli.rst +0 -0
  32. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/core.rst +0 -0
  33. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/facades.rst +0 -0
  34. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/index.rst +0 -0
  35. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/mcp.rst +0 -0
  36. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/operations.rst +0 -0
  37. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/protocols.rst +0 -0
  38. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/transport.rst +0 -0
  39. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/api/virtual.rst +0 -0
  40. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/cli.rst +0 -0
  41. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/conf.py +0 -0
  42. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/development.rst +0 -0
  43. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/fake/index.rst +0 -0
  44. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/fake/internals.rst +0 -0
  45. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/fake/serving.rst +0 -0
  46. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/fake/testing.rst +0 -0
  47. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/concepts.rst +0 -0
  48. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/configuration.rst +0 -0
  49. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/installation.rst +0 -0
  50. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/principles.rst +0 -0
  51. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/quickstart.rst +0 -0
  52. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/reading.rst +0 -0
  53. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/guide/writing.rst +0 -0
  54. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/index.rst +0 -0
  55. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/mcp.rst +0 -0
  56. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gs105pe.rst +0 -0
  57. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gs110emx.rst +0 -0
  58. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gs305ep.rst +0 -0
  59. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gs728tpp.rst +0 -0
  60. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gsm7228ps.rst +0 -0
  61. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/gsm7252ps.rst +0 -0
  62. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/index.rst +0 -0
  63. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/m4300-16x.rst +0 -0
  64. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/m4300-24x.rst +0 -0
  65. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/models/support.rst +0 -0
  66. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/cli.rst +0 -0
  67. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http/cheetah-form.rst +0 -0
  68. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http/cheetah-v1.rst +0 -0
  69. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http/gambit.rst +0 -0
  70. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http/merge-hash-cgi.rst +0 -0
  71. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http/xml-api.rst +0 -0
  72. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/http.rst +0 -0
  73. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/index.rst +0 -0
  74. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/nsdp.rst +0 -0
  75. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/protocols/snmp.rst +0 -0
  76. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-15-foundation.md +0 -0
  77. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-17-slice-02-snmp-read-core.md +0 -0
  78. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-17-slice-03-read-apis.md +0 -0
  79. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-18-slice-04-snmp-write.md +0 -0
  80. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-18-slice-05-nsdp.md +0 -0
  81. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-18-slice-06-http.md +0 -0
  82. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-18-slice-07-cli.md +0 -0
  83. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-18-slice-08-packaging-ci.md +0 -0
  84. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/plans/2026-07-23-gsm7252ps-http-xe-dialect.md +0 -0
  85. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/specs/2026-07-15-netgear-control-library-design.md +0 -0
  86. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/docs/superpowers/specs/2026-07-23-gsm7252ps-http-xe-dialect-design.md +0 -0
  87. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/packaging/apt-index.html +0 -0
  88. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/packaging/ci-build.sh +0 -0
  89. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/packaging/deb-version.py +0 -0
  90. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/pyproject.toml +0 -0
  91. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/__init__.py +0 -0
  92. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/_dispatch.py +0 -0
  93. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/aio_api.py +0 -0
  94. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/capabilities.py +0 -0
  95. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/__init__.py +0 -0
  96. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/capture.py +0 -0
  97. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/context.py +0 -0
  98. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/format.py +0 -0
  99. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/main.py +0 -0
  100. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/resolve.py +0 -0
  101. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli/safety.py +0 -0
  102. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli_read.py +0 -0
  103. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/cli_write.py +0 -0
  104. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/config.py +0 -0
  105. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/errors.py +0 -0
  106. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/http_read.py +0 -0
  107. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/http_write.py +0 -0
  108. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/mcp/__init__.py +0 -0
  109. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/mcp/server.py +0 -0
  110. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/models.py +0 -0
  111. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/nsdp_read.py +0 -0
  112. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/nsdp_write.py +0 -0
  113. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/__init__.py +0 -0
  114. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/cli/__init__.py +0 -0
  115. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/cli/commands.py +0 -0
  116. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/cli/parse.py +0 -0
  117. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/__init__.py +0 -0
  118. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/crypt.py +0 -0
  119. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/endpoints.py +0 -0
  120. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/forms.py +0 -0
  121. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/parse.py +0 -0
  122. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/session.py +0 -0
  123. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/http/types.py +0 -0
  124. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/__init__.py +0 -0
  125. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/auth.py +0 -0
  126. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/client.py +0 -0
  127. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/parsers.py +0 -0
  128. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/protocol.py +0 -0
  129. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/types.py +0 -0
  130. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/nsdp/write.py +0 -0
  131. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/snmp/__init__.py +0 -0
  132. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/snmp/client.py +0 -0
  133. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/snmp/oids.py +0 -0
  134. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/snmp/parse.py +0 -0
  135. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/protocols/snmp/write.py +0 -0
  136. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/py.typed +0 -0
  137. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/registry.py +0 -0
  138. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/snmp_read.py +0 -0
  139. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/snmp_write.py +0 -0
  140. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/sync_api.py +0 -0
  141. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/__init__.py +0 -0
  142. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/aio/__init__.py +0 -0
  143. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/aio/nsdp_udp.py +0 -0
  144. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/aio/snmp_pysnmp.py +0 -0
  145. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/cli/__init__.py +0 -0
  146. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/cli/console.py +0 -0
  147. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/cli/session.py +0 -0
  148. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/cli/ssh.py +0 -0
  149. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/cli/telnet.py +0 -0
  150. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/http/__init__.py +0 -0
  151. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/http/client.py +0 -0
  152. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/sync/__init__.py +0 -0
  153. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/sync/nsdp_udp.py +0 -0
  154. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/transport/sync/snmp_netsnmp_cli.py +0 -0
  155. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/__init__.py +0 -0
  156. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/cli_fastpath.py +0 -0
  157. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/__init__.py +0 -0
  158. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/cli.py +0 -0
  159. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/http.py +0 -0
  160. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/mibview.py +0 -0
  161. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/nsdp.py +0 -0
  162. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/faces/snmp.py +0 -0
  163. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/seed.py +0 -0
  164. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/server.py +0 -0
  165. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/state.py +0 -0
  166. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web.py +0 -0
  167. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_fastpath_vlan.py +0 -0
  168. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_fastpath_xui.py +0 -0
  169. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gs105pe.py +0 -0
  170. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gs110emx.py +0 -0
  171. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gs110emx_templates.py +0 -0
  172. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gs728tpp.py +0 -0
  173. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gsm7228ps.py +0 -0
  174. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_gsm7252ps.py +0 -0
  175. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/src/netgear_switch/virtual/web_m4300.py +0 -0
  176. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/capture_parity.py +0 -0
  177. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_capture.py +0 -0
  178. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_cli_integration.py +0 -0
  179. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_control_poe_port.py +0 -0
  180. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_control_vlan_ip.py +0 -0
  181. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_format.py +0 -0
  182. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_main_framework.py +0 -0
  183. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_new_commands.py +0 -0
  184. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_op_coverage.py +0 -0
  185. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_prompt_wiring.py +0 -0
  186. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_read_commands.py +0 -0
  187. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_resolve.py +0 -0
  188. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_safety.py +0 -0
  189. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/cli/test_serve.py +0 -0
  190. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/conftest.py +0 -0
  191. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/equivalence.py +0 -0
  192. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/captures/gsm7228ps.json +0 -0
  193. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/captures/gsm7252ps.json +0 -0
  194. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/captures/m4300-16x.json +0 -0
  195. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/captures/m4300-24x.json +0 -0
  196. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_environment.txt +0 -0
  197. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_lldp.txt +0 -0
  198. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_mac_table.txt +0 -0
  199. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_network.txt +0 -0
  200. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_poe.txt +0 -0
  201. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_port_all.txt +0 -0
  202. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_show_version.txt +0 -0
  203. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_vlan.txt +0 -0
  204. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_vlan_brief.txt +0 -0
  205. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7228ps_vlan_port_all.txt +0 -0
  206. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_environment.txt +0 -0
  207. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_interface_ethernet_1_0_1.txt +0 -0
  208. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_lldp_remote_device_all.txt +0 -0
  209. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_mac_addr_table.txt +0 -0
  210. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_network.txt +0 -0
  211. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_poe_port_info_all.txt +0 -0
  212. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_port_all.txt +0 -0
  213. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_version.txt +0 -0
  214. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_vlan_90.txt +0 -0
  215. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_vlan_brief.txt +0 -0
  216. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/gsm7252ps_show_vlan_port_all.txt +0 -0
  217. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_environment.txt +0 -0
  218. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_interface_ethernet_1_0_1.txt +0 -0
  219. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_ip_management.txt +0 -0
  220. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_lldp_remote_device_all.txt +0 -0
  221. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_mac_addr_table.txt +0 -0
  222. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_poe_port_info_all.txt +0 -0
  223. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_port_all.txt +0 -0
  224. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_version.txt +0 -0
  225. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_vlan.txt +0 -0
  226. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_vlan_1.txt +0 -0
  227. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_vlan_4.txt +0 -0
  228. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_vlan_5.txt +0 -0
  229. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_16x_show_vlan_port_all.txt +0 -0
  230. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_environment.txt +0 -0
  231. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_interface_ethernet_1_0_1.txt +0 -0
  232. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_ip_management.txt +0 -0
  233. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_lldp_remote_device_all.txt +0 -0
  234. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_mac_addr_table.txt +0 -0
  235. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_port_all.txt +0 -0
  236. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_version.txt +0 -0
  237. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_vlan.txt +0 -0
  238. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_vlan_5.txt +0 -0
  239. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_vlan_90.txt +0 -0
  240. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/cli/m4300_24x_show_vlan_port_all.txt +0 -0
  241. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_membership.html +0 -0
  242. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_portstats.html +0 -0
  243. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_pvid.html +0 -0
  244. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_status.html +0 -0
  245. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_switch_info.html +0 -0
  246. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs105pe_vlancfg.html +0 -0
  247. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_cf8021q.html +0 -0
  248. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_interface_stats.html +0 -0
  249. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_login.html +0 -0
  250. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_port_settings.html +0 -0
  251. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_pvid.html +0 -0
  252. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_redirect.html +0 -0
  253. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_sysinfo.html +0 -0
  254. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs110emx_vlanmembership.html +0 -0
  255. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_dashboard.html +0 -0
  256. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_login.html +0 -0
  257. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_membership.html +0 -0
  258. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_poestatus.html +0 -0
  259. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_portstats.html +0 -0
  260. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_pvid.html +0 -0
  261. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs305ep_vlancfg.html +0 -0
  262. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_device_info_and_sensors.xml +0 -0
  263. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_lldp.xml +0 -0
  264. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_macs.xml +0 -0
  265. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_mgmt_ip.xml +0 -0
  266. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_poe.xml +0 -0
  267. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_ports.xml +0 -0
  268. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_pvids_membership.xml +0 -0
  269. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_vlan_membership_per_vlan.xml +0 -0
  270. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gs728tpp_vlans.xml +0 -0
  271. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_basicAddressTable.html +0 -0
  272. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_ipConfiguration.html +0 -0
  273. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_lldpRemoteInventory.html +0 -0
  274. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_poeInterfaceConfiguration.html +0 -0
  275. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_portPvidConfiguration.html +0 -0
  276. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_portStatistics.html +0 -0
  277. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_portsConfiguration.html +0 -0
  278. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_sysInfo.html +0 -0
  279. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_vlanPortCfg_vlan5.html +0 -0
  280. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7228ps_vlanStatus.html +0 -0
  281. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_basicAddressTable.html +0 -0
  282. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_http_configuration.html +0 -0
  283. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_ipConfiguration.html +0 -0
  284. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_lldpRemoteInventory.html +0 -0
  285. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_login.html +0 -0
  286. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_poeInterfaceConfiguration.html +0 -0
  287. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_portPvidConfiguration.html +0 -0
  288. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_portStatistics.html +0 -0
  289. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_portsConfiguration.html +0 -0
  290. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_sysInfo.html +0 -0
  291. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_syslog_configuration.html +0 -0
  292. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_user_configuration.html +0 -0
  293. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan1.html +0 -0
  294. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_vlanPortCfg_vlan141.html +0 -0
  295. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_vlanStatus.html +0 -0
  296. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_vlan_configuration_live.html +0 -0
  297. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/gsm7252ps_vlan_status_live.html +0 -0
  298. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_16x_lldpRemoteInventory.html +0 -0
  299. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_16x_mgmtVlanIpv4Configuration.html +0 -0
  300. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_16x_poeInterfaceConfiguration.html +0 -0
  301. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_16x_portsConfiguration.html +0 -0
  302. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_16x_vlanportcfg_vlan4.html +0 -0
  303. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_24x_poeInterfaceConfiguration.html +0 -0
  304. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_addresstable.html +0 -0
  305. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_lldpRemoteInventory.html +0 -0
  306. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_mgmtVlanIpv4Configuration.html +0 -0
  307. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_ports.html +0 -0
  308. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_portstats.html +0 -0
  309. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_pvid.html +0 -0
  310. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_sysinfo.html +0 -0
  311. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_vlanportcfg_vlan1.html +0 -0
  312. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/http/m4300_vlanstatus.html +0 -0
  313. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/snmp/gsm7252ps_fans.txt +0 -0
  314. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/snmp/gsm7252ps_ifhighspeed.txt +0 -0
  315. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/snmp/gsm7252ps_ifoperstatus.txt +0 -0
  316. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/fixtures/snmp/gsm7252ps_psu.txt +0 -0
  317. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/http_specs.py +0 -0
  318. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/cli/test_cli_parse.py +0 -0
  319. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/http/test_crypt.py +0 -0
  320. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/http/test_endpoints.py +0 -0
  321. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/http/test_forms.py +0 -0
  322. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/http/test_parse.py +0 -0
  323. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/nsdp/test_auth.py +0 -0
  324. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/nsdp/test_parsers.py +0 -0
  325. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/nsdp/test_protocol.py +0 -0
  326. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/nsdp/test_write_frame.py +0 -0
  327. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_client.py +0 -0
  328. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_oids.py +0 -0
  329. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_lldp_macs.py +0 -0
  330. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_mgmt_ip.py +0 -0
  331. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_poe_sensors.py +0 -0
  332. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_ports.py +0 -0
  333. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_system_info.py +0 -0
  334. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_parse_vlans.py +0 -0
  335. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/protocols/snmp/test_write_encode.py +0 -0
  336. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_aio_api.py +0 -0
  337. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_capabilities.py +0 -0
  338. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_cli_read.py +0 -0
  339. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_cli_vlan_write.py +0 -0
  340. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_cli_write.py +0 -0
  341. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_config.py +0 -0
  342. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_cross_backend_equivalence.py +0 -0
  343. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_deb_version.py +0 -0
  344. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_dispatch.py +0 -0
  345. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_docs_coverage.py +0 -0
  346. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_errors.py +0 -0
  347. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_facade_equivalence.py +0 -0
  348. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_dispatch.py +0 -0
  349. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_equivalence.py +0 -0
  350. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_read.py +0 -0
  351. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_vlan_membership.py +0 -0
  352. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_write.py +0 -0
  353. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_http_xui_writes.py +0 -0
  354. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_import.py +0 -0
  355. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_mcp_server.py +0 -0
  356. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_models.py +0 -0
  357. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_models_snmp_read.py +0 -0
  358. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_nsdp_integration.py +0 -0
  359. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_nsdp_read.py +0 -0
  360. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_nsdp_write.py +0 -0
  361. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_public_api.py +0 -0
  362. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_quality_gates.py +0 -0
  363. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_registry.py +0 -0
  364. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_snmp_integration.py +0 -0
  365. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_snmp_read.py +0 -0
  366. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_snmp_write.py +0 -0
  367. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_sync_api.py +0 -0
  368. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_version.py +0 -0
  369. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/test_write_equivalence.py +0 -0
  370. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/_fastpath_fake.py +0 -0
  371. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_cli_console.py +0 -0
  372. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_cli_scp_cert.py +0 -0
  373. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_cli_telnet.py +0 -0
  374. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_http_client.py +0 -0
  375. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_nsdp_udp_sync.py +0 -0
  376. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_set_transport.py +0 -0
  377. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_snmp_netsnmp_cli.py +0 -0
  378. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_snmp_pysnmp.py +0 -0
  379. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/transport/test_value_parity.py +0 -0
  380. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_cli_cross_backend.py +0 -0
  381. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_cli_gsm7228ps_parity.py +0 -0
  382. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_gsm7228ps_seed.py +0 -0
  383. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_hostname.py +0 -0
  384. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_m4300_seeds.py +0 -0
  385. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_mibview.py +0 -0
  386. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_mutable_state.py +0 -0
  387. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_nsdp_state.py +0 -0
  388. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_serve_daemon.py +0 -0
  389. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_snmp_write_face.py +0 -0
  390. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_state_seed.py +0 -0
  391. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_switchport_vlan_write.py +0 -0
  392. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_syslog_fidelity.py +0 -0
  393. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_virtual_http_face.py +0 -0
  394. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_virtual_nsdp_face.py +0 -0
  395. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_virtual_snmp_face.py +0 -0
  396. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_web_projection.py +0 -0
  397. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/tests/virtual/test_write_outcomes.py +0 -0
  398. {python_netgear_switch_library-0.0.post357 → python_netgear_switch_library-0.0.post359}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-netgear-switch-library
3
- Version: 0.0.post357
3
+ Version: 0.0.post359
4
4
  Summary: Python library and CLI to query and control Netgear switches over SNMP, NSDP and HTTP.
5
5
  Author-email: Tim Ansell <me@mith.ro>
6
6
  License-Expression: Apache-2.0
@@ -407,3 +407,79 @@ So the fix is two parts, and neither is a device limitation:
407
407
  Which of the four buttons is Add and which is Delete has NOT been established —
408
408
  that needs the page's own markup read carefully, and the write driven against a
409
409
  switch with a throwaway VLAN id before anything is claimed.
410
+
411
+
412
+ ### `/vlanConfiguration.html` field semantics (read off the capture)
413
+
414
+ Correcting the previous note again: `v_2_1_1`..`v_2_1_4` are **row cell fields,
415
+ not action buttons**. From the capture:
416
+
417
+ | Field | Value in row 1 | Meaning |
418
+ |---|---|---|
419
+ | `1.0.14.v_2_1_1` | `1` | VLAN id |
420
+ | `1.0.14.v_2_1_2` | `default` | VLAN name |
421
+ | `1.0.14.v_2_1_3` | `Default` | VLAN type |
422
+ | `1.0.14.v_2_1_4` | `Add` | per-row action, in a `display:none` cell |
423
+
424
+ Two `FORM`s as expected: `/vlanConfiguration.html/a0` and `/a1`.
425
+
426
+ So this is the standard XUI editable-table shape the library already handles for
427
+ PoE (`parse_xui_list_page` + `forms.xui_row_apply_form`), with one difference
428
+ that matters: PoE **edits an existing row**, whereas creating a VLAN means
429
+ **submitting a NEW row** carrying the id, the name and the action cell.
430
+
431
+ `xui_row_apply_form` builds its body from a row the parser found on the page, so
432
+ it cannot express "a row that is not there yet". Creating a VLAN needs a sibling
433
+ builder — an add-row form — rather than a new argument to the existing one.
434
+
435
+ **Not yet established, and deliberately not guessed:** whether the action cell
436
+ takes the literal `Add` for a new row, what a delete row carries in that cell,
437
+ and whether the id/name cells for a new row are indexed `v_2_<n>_<col>` at the
438
+ next free row number or at a fixed "new row" index. Every one of those is
439
+ readable from the page's own JavaScript or from a browser-driven capture of a
440
+ real Add. Until then this stays unimplemented: posting a guessed action to a
441
+ switch's live VLAN table is the one write here that could disrupt production
442
+ VLANs, and the project's rule is that a wrong guess must never be shipped as a
443
+ capability.
444
+
445
+
446
+ ### RESOLVED: the action cell is SNMP RowStatus, read from the page's own JS
447
+
448
+ `/scripts/_xe_vlanConfiguration.js` (captured as
449
+ `tests/fixtures/http/gsm7252ps_vlan_configuration.js`) defines the `2_1_4`
450
+ column's value list:
451
+
452
+ [ "Invalid","Active","Not In Service","Not Ready","Add","Reserve","Delete","Modify" ]
453
+
454
+ Indexed from 0, that is **SNMP RowStatus**:
455
+
456
+ | Index | Label | RowStatus |
457
+ |---|---|---|
458
+ | 1 | Active | `active(1)` |
459
+ | 2 | Not In Service | `notInService(2)` |
460
+ | 3 | Not Ready | `notReady(3)` |
461
+ | **4** | **Add** | **`createAndGo(4)`** |
462
+ | 5 | Reserve | `createAndWait(5)` |
463
+ | **6** | **Delete** | **`destroy(6)`** |
464
+
465
+ The web UI is a thin skin over the same Q-BRIDGE row semantics the SNMP backend
466
+ already writes — and the library already names those constants:
467
+ `oids.ROW_STATUS_CREATE_AND_GO = 4` and `oids.ROW_STATUS_DESTROY = 6`.
468
+
469
+ The same file gives the two action buttons:
470
+
471
+ xeData.xbImage_6_1_1 = "/base/images/Add_on.gif" -> button 6_1_1 = Add
472
+ xeData.xbImage_6_1_2 = "/base/images/Delete_on.gif" -> button 6_1_2 = Delete
473
+
474
+ So all three unknowns from the previous note are now answered **from the
475
+ device's own code**, with no guessing and no write attempted:
476
+
477
+ * the action cell takes `4` to create and `6` to delete;
478
+ * a create submits a new row carrying id, name and action `4`;
479
+ * the submit buttons are `6_1_1` (Add) and `6_1_2` (Delete).
480
+
481
+ That is enough to implement `_xui_vlan_create`/`_xui_vlan_delete` against
482
+ `/vlanConfiguration.html`, posting to its `/a0` or `/a1` action alongside the
483
+ existing `submit_flag`. It still needs driving against a switch with a throwaway
484
+ VLAN id and reading back before `reads_verified`-style confidence is claimed —
485
+ but the mechanism is no longer inferred.
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.0.post357'
22
- __version_tuple__ = version_tuple = (0, 0, 'post357')
21
+ __version__ = version = '0.0.post359'
22
+ __version_tuple__ = version_tuple = (0, 0, 'post359')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -0,0 +1,236 @@
1
+
2
+
3
+ // This file is auto-generated by XE - DON'T EDIT
4
+
5
+
6
+ // Create the xe data object
7
+ xeData.nPath = [ ["Switching","vlanConfiguration.html"],["VLAN","vlanConfiguration.html"],["Advanced","vlanConfiguration.html"],["VLAN Configuration","vlanConfiguration.html"] ];
8
+ xeData.thisPageHelp = "help_vlanConfiguration.html" ;
9
+ xeData.userJS = "NetGearGlobalJS"
10
+ xeData.xa_1_1_1 = ["","","","","","","","","","mandate","","","","","","","","","Enable","","both","6_1_5","6_1_4","6_1_4","6_1_5","",[],"Disable","","both","6_1_4","6_1_5","6_1_5","6_1_4","",[]];
11
+ xeData.xa_2_1_1 = ["","","","","","","","","","mandate","","onChange","","","","","",[],"","","both","","","2_1_5|2_1_6","","",[]];
12
+ xeData.xa_g_2_1_1 = ["","","","","","","","","","mandate","","onChange","","","","","",[],"","","both","","","g_2_1_5|g_2_1_6","","",[]];
13
+ xeData.xa_6_1_1 = ["","","","","","","","","","","","","","","1|2_1_6|g_2_1_6","","",[]];
14
+ xeData.xa_6_1_2 = ["","","","","","","","","","","","","","","1|2_1_6|g_2_1_6","","2_1_4|g_2_1_4",["Delete|Delete"]];
15
+ xeData.xa_6_1_6 = ["","","","","","","","","","","","","","","2_1_6|g_2_1_6","","",[]];
16
+ xeData.xa_6_1_3 = ["","","","","","","","","","","","","","","2_1_6|g_2_1_6","","",[]];
17
+ xeData.xa_6_1_5 = ["","","","","","","","","","","","","","","2","","",[]];
18
+ xeData.xa_6_1_4 = ["","","","","","","","","","","","","","","1","","2_1_4|g_2_1_4",["Active|Active"]];
19
+ xeData.xe_1_1_1 = "enable_t";
20
+ xeData.doRef_1_1_1 = 0;
21
+ xeData.xc_1_1_1 = "checkbox";
22
+ xeData.xp_1_1_1 = "write-only";
23
+ xeData.xd_1_1_1 = "enum";
24
+ xeData.xdt_1_1_1 = "enable_t";
25
+ xeData.xeleName_1_1_1 = "Reset Configuration";
26
+ xeData["js_1_1_1_Enable"]=["confirm_vlan_reset",""]
27
+ allWebEnums[xeData["xe_1_1_1"] + "_1_1_1"] = [ "Enable","Disable" ];
28
+ xeData.doRef_4_1_1 = 0;
29
+ xeData.xc_4_1_1 = "textbox";
30
+ xeData.xp_4_1_1 = "read-write";
31
+ xeData.xd_4_1_1 = "uint";
32
+ xeData.xdt_4_1_1 = "uint";
33
+ xeData.xeleName_4_1_1 = "Internal VLAN Allocation Base";
34
+ xeData.xMaxLen_4_1_1 = "4";
35
+ xeData.xattr_4_1_1 = ["discardNonInt=1"];
36
+ xeData.xe_4_2_1 = "AllocationPolicy_t";
37
+ xeData.doRef_4_2_1 = 0;
38
+ xeData.xc_4_2_1 = "radio";
39
+ xeData.xp_4_2_1 = "read-write";
40
+ xeData.xd_4_2_1 = "enum";
41
+ xeData.xdt_4_2_1 = "AllocationPolicy_t";
42
+ xeData.xeleName_4_2_1 = "Internal VLAN Allocation Policy";
43
+ allWebEnums[xeData["xe_4_2_1"] + "_4_2_1"] = [ "Ascending","Descending" ];
44
+ xeData.doRef_5_1_1 = 0;
45
+ xeData.xc_5_1_1 = "label";
46
+ xeData.xp_5_1_1 = "read-write";
47
+ xeData.xd_5_1_1 = "uint";
48
+ xeData.xdt_5_1_1 = "uint";
49
+ xeData.xeleName_5_1_1 = "Internal VLAN Allocation Base";
50
+ xeData.xMaxLen_5_1_1 = "4";
51
+ xeData.xe_5_2_1 = "AllocationPolicy_t";
52
+ xeData.doRef_5_2_1 = 0;
53
+ xeData.xc_5_2_1 = "label";
54
+ xeData.xp_5_2_1 = "read-write";
55
+ xeData.xd_5_2_1 = "enum";
56
+ xeData.xdt_5_2_1 = "AllocationPolicy_t";
57
+ xeData.xeleName_5_2_1 = "Internal VLAN Allocation Policy";
58
+ allWebEnums[xeData["xe_5_2_1"] + "_5_2_1"] = [ "Ascending","Descending" ];
59
+ xeData.xk_g_2_1_1 = 1;
60
+ xeData.xe_g_2_1_1 = "e_v_g_2_1_1";
61
+ xeData.doRef_g_2_1_1 = 0;
62
+ xeData.xc_g_2_1_1 = "textbox";
63
+ xeData.xp_g_2_1_1 = "read-write";
64
+ xeData.xd_g_2_1_1 = "user";
65
+ xeData.xdt_g_2_1_1 = "vlanRange_t";
66
+ xeData.xeleName_g_2_1_1 = "VLAN ID";
67
+ xeData["js_g_2_1_1_mandate"]=["vlan_validate_name_and_type","2_1_2|2_1_3|2_1_5|2_1_6"]
68
+ xeData.xMaxLen_g_2_1_1 = "4";
69
+ xeData.xattr_g_2_1_1 = ["noEdit=true","style=width:40px","discardNonInt=1"];
70
+ xeData.xk_2_1_1 = 1;
71
+ xeData.xe_2_1_1 = "e_v_2_1_1";
72
+ xeData.doRef_2_1_1 = 0;
73
+ xeData.xc_2_1_1 = "plain-label";
74
+ xeData.xp_2_1_1 = "read-write";
75
+ xeData.xd_2_1_1 = "user";
76
+ xeData.xdt_2_1_1 = "vlanRange_t";
77
+ xeData.xeleName_2_1_1 = "VLAN ID";
78
+ xeData["js_2_1_1_mandate"]=["vlan_validate_name_and_type","2_1_2|2_1_3|2_1_5|2_1_6"]
79
+ xeData.xMaxLen_2_1_1 = "4";
80
+ xeData.xattr_2_1_1 = ["noEdit=true","style=width:40px","discardNonInt=1"];
81
+ xeData.doRef_g_2_1_2 = 0;
82
+ xeData.xc_g_2_1_2 = "textbox";
83
+ xeData.xp_g_2_1_2 = "read-write";
84
+ xeData.xd_g_2_1_2 = "user";
85
+ xeData.xdt_g_2_1_2 = "string_t";
86
+ xeData.xeleName_g_2_1_2 = "VLAN Name";
87
+ xeData.xMaxLen_g_2_1_2 = "32";
88
+ xeData.xattr_g_2_1_2 = ["style=width:80px","evalBlank=true"];
89
+ xeData.doRef_2_1_2 = 0;
90
+ xeData.xc_2_1_2 = "plain-label";
91
+ xeData.xp_2_1_2 = "read-write";
92
+ xeData.xd_2_1_2 = "user";
93
+ xeData.xdt_2_1_2 = "string_t";
94
+ xeData.xeleName_2_1_2 = "VLAN Name";
95
+ xeData.xMaxLen_2_1_2 = "32";
96
+ xeData.xattr_2_1_2 = ["style=width:80px","evalBlank=true"];
97
+ xeData.xe_g_2_1_3 = "L7_VLAN_TYPE_t";
98
+ xeData.doRef_g_2_1_3 = 0;
99
+ xeData.xc_g_2_1_3 = "plain-label";
100
+ xeData.xp_g_2_1_3 = "read-only";
101
+ xeData.xd_g_2_1_3 = "enum";
102
+ xeData.xdt_g_2_1_3 = "L7_VLAN_TYPE_t";
103
+ xeData.xeleName_g_2_1_3 = "VLAN Type";
104
+ allWebEnums[xeData["xe_g_2_1_3"] + "_g_2_1_3"] = [ "Default","Static","Dynamic (GVRP)","Dynamic (MVRP)","Dynamic (L2 Tunnel)","Dynamic (IP VLAN)","Dynamic (DOT1X)","Dynamic (OPENFLOW)","Auto-Video" ];
105
+ xeData.xe_2_1_3 = "L7_VLAN_TYPE_t";
106
+ xeData.doRef_2_1_3 = 0;
107
+ xeData.xc_2_1_3 = "plain-label";
108
+ xeData.xp_2_1_3 = "read-only";
109
+ xeData.xd_2_1_3 = "enum";
110
+ xeData.xdt_2_1_3 = "L7_VLAN_TYPE_t";
111
+ xeData.xeleName_2_1_3 = "VLAN Type";
112
+ allWebEnums[xeData["xe_2_1_3"] + "_2_1_3"] = [ "Default","Static","Dynamic (GVRP)","Dynamic (MVRP)","Dynamic (L2 Tunnel)","Dynamic (IP VLAN)","Dynamic (DOT1X)","Dynamic (OPENFLOW)","Auto-Video" ];
113
+ xeData.xe_g_2_1_6 = "enable_t";
114
+ xeData.doRef_g_2_1_6 = 0;
115
+ xeData.xc_g_2_1_6 = "combo";
116
+ xeData.xp_g_2_1_6 = "write-only";
117
+ xeData.xd_g_2_1_6 = "string";
118
+ xeData.xdt_g_2_1_6 = "string";
119
+ xeData.xeleName_g_2_1_6 = "Make Static";
120
+ allWebEnums[xeData["xe_g_2_1_6"] + "_g_2_1_6"] = [ "Enable","Disable" ];
121
+ xeData.xe_2_1_6 = "enable_t";
122
+ xeData.doRef_2_1_6 = 0;
123
+ xeData.xc_2_1_6 = "plain-label";
124
+ xeData.xp_2_1_6 = "write-only";
125
+ xeData.xd_2_1_6 = "string";
126
+ xeData.xdt_2_1_6 = "string";
127
+ xeData.xeleName_2_1_6 = "Make Static";
128
+ allWebEnums[xeData["xe_2_1_6"] + "_2_1_6"] = [ "Enable","Disable" ];
129
+ xeData.xe_g_2_1_5 = "L7_VLAN_TYPE_t";
130
+ xeData.doRef_g_2_1_5 = 0;
131
+ xeData.xc_g_2_1_5 = "hidden";
132
+ xeData.xp_g_2_1_5 = "read-write";
133
+ xeData.xd_g_2_1_5 = "enum";
134
+ xeData.xdt_g_2_1_5 = "L7_VLAN_TYPE_t";
135
+ xeData.xeleName_g_2_1_5 = "VLAN Type";
136
+ allWebEnums[xeData["xe_g_2_1_5"] + "_g_2_1_5"] = [ "Default","Static","Dynamic (GVRP)","Dynamic (MVRP)","Dynamic (L2 Tunnel)","Dynamic (IP VLAN)","Dynamic (DOT1X)","Dynamic (OPENFLOW)","Auto-Video" ];
137
+ xeData.xe_2_1_5 = "L7_VLAN_TYPE_t";
138
+ xeData.doRef_2_1_5 = 0;
139
+ xeData.xc_2_1_5 = "hidden";
140
+ xeData.xp_2_1_5 = "read-write";
141
+ xeData.xd_2_1_5 = "enum";
142
+ xeData.xdt_2_1_5 = "L7_VLAN_TYPE_t";
143
+ xeData.xeleName_2_1_5 = "VLAN Type";
144
+ allWebEnums[xeData["xe_2_1_5"] + "_2_1_5"] = [ "Default","Static","Dynamic (GVRP)","Dynamic (MVRP)","Dynamic (L2 Tunnel)","Dynamic (IP VLAN)","Dynamic (DOT1X)","Dynamic (OPENFLOW)","Auto-Video" ];
145
+ xeData.xe_g_2_1_4 = "L7_ROW_STATUS_t";
146
+ xeData.doRef_g_2_1_4 = 0;
147
+ xeData.xc_g_2_1_4 = "hidden";
148
+ xeData.xp_g_2_1_4 = "write-only";
149
+ xeData.xd_g_2_1_4 = "row-status";
150
+ xeData.xdt_g_2_1_4 = "L7_ROW_STATUS_t";
151
+ xeData.xeleName_g_2_1_4 = "Vlan";
152
+ allWebEnums[xeData["xe_g_2_1_4"] + "_g_2_1_4"] = [ "Invalid","Active","Not In Service","Not Ready","Add","Reserve","Delete","Modify" ];
153
+ xeData.xe_2_1_4 = "L7_ROW_STATUS_t";
154
+ xeData.doRef_2_1_4 = 0;
155
+ xeData.xc_2_1_4 = "hidden";
156
+ xeData.xp_2_1_4 = "write-only";
157
+ xeData.xd_2_1_4 = "row-status";
158
+ xeData.xdt_2_1_4 = "L7_ROW_STATUS_t";
159
+ xeData.xeleName_2_1_4 = "Vlan";
160
+ allWebEnums[xeData["xe_2_1_4"] + "_2_1_4"] = [ "Invalid","Active","Not In Service","Not Ready","Add","Reserve","Delete","Modify" ];
161
+ xeData.xk_3_1_1 = 1;
162
+ xeData.xe_3_1_1 = "e_v_3_1_1";
163
+ xeData.doRef_3_1_1 = 0;
164
+ xeData.xc_3_1_1 = "plain-label";
165
+ xeData.xp_3_1_1 = "read-write";
166
+ xeData.xd_3_1_1 = "user";
167
+ xeData.xdt_3_1_1 = "vlanRange_t";
168
+ xeData.xeleName_3_1_1 = "VLAN ID";
169
+ xeData.doRef_3_1_2 = 0;
170
+ xeData.xc_3_1_2 = "plain-label";
171
+ xeData.xp_3_1_2 = "read-write";
172
+ xeData.xd_3_1_2 = "user";
173
+ xeData.xdt_3_1_2 = "string_t";
174
+ xeData.xeleName_3_1_2 = "VLAN Name";
175
+ xeData.xe_3_1_3 = "L7_VLAN_TYPE_t";
176
+ xeData.doRef_3_1_3 = 0;
177
+ xeData.xc_3_1_3 = "plain-label";
178
+ xeData.xp_3_1_3 = "read-write";
179
+ xeData.xd_3_1_3 = "enum";
180
+ xeData.xdt_3_1_3 = "L7_VLAN_TYPE_t";
181
+ xeData.xeleName_3_1_3 = "VLAN Type";
182
+ allWebEnums[xeData["xe_3_1_3"] + "_3_1_3"] = [ "Default","Static","Dynamic (GVRP)","Dynamic (MVRP)","Dynamic (L2 Tunnel)","Dynamic (IP VLAN)","Dynamic (DOT1X)","Dynamic (OPENFLOW)","Auto-Video" ];
183
+ xeData.xc_6_1_1 = "button";
184
+ xeData.xt_6_1_1 = "8";
185
+ xeData.xbt_6_1_1 = "buttonSubmit" ;
186
+ xeData.xbImage_6_1_1 = "/base/images/Add_on.gif";
187
+ xeData.xdImage_6_1_1 = "/base/images/Add_off.gif";
188
+ xeData.xc_6_1_2 = "button";
189
+ xeData.xt_6_1_2 = "8";
190
+ xeData.xbt_6_1_2 = "buttonSubmit" ;
191
+ xeData["js_6_1_2_button"]=["vlan_validate_name_and_type","2_1_2|2_1_3|2_1_5|2_1_6"]
192
+ xeData.xbImage_6_1_2 = "/base/images/Delete_on.gif";
193
+ xeData.xdImage_6_1_2 = "/base/images/Delete_off.gif";
194
+ xeData.xc_6_1_6 = "button";
195
+ xeData.xt_6_1_6 = "1";
196
+ xeData.xbt_6_1_6 = "buttonClear" ;
197
+ xeData.xbImage_6_1_6 = "/base/images/Refresh_on.gif";
198
+ xeData.xdImage_6_1_6 = "/base/images/Refresh_off.gif";
199
+ xeData.xc_6_1_3 = "button";
200
+ xeData.xt_6_1_3 = "8";
201
+ xeData.xbt_6_1_3 = "buttonRestore" ;
202
+ xeData.xbImage_6_1_3 = "/base/images/Cancel_on.gif";
203
+ xeData.xdImage_6_1_3 = "/base/images/Cancel_off.gif";
204
+ xeData.xc_6_1_5 = "button";
205
+ xeData.xt_6_1_5 = "8";
206
+ xeData.xbt_6_1_5 = "buttonSubmit" ;
207
+ xeData.xbImage_6_1_5 = "/base/images/Apply_on.gif";
208
+ xeData.xdImage_6_1_5 = "/base/images/Apply_off.gif";
209
+ xeData.xc_6_1_4 = "button";
210
+ xeData.xt_6_1_4 = "8";
211
+ xeData.xbt_6_1_4 = "buttonSubmit" ;
212
+ xeData["js_6_1_4_button"]=["vlan_validate_name_and_type_apply","2_1_2|2_1_3|2_1_5|2_1_6"]
213
+ xeData.xbImage_6_1_4 = "/base/images/Apply_on.gif";
214
+ xeData.xdImage_6_1_4 = "/base/images/Apply_off.gif";
215
+ xeData.elemWithExtnActions = [];
216
+ xuiIncludeJSFile("/scripts/NetGearGlobalJS.js");
217
+
218
+ function jScriptValidateUiAndElementLevel(xid,value)
219
+ {
220
+ var newVal = null;
221
+ switch(xid)
222
+ {
223
+ case "g_2_1_2":
224
+ newVal = jScriptValidateMapIdToVal(0,value);
225
+ if(newVal != null) return newVal;
226
+ newVal = jScriptValidateMapIdToVal(0,value);
227
+ if(newVal != null) return newVal;
228
+ newVal = jScriptValidateMapIdToVal(32,value);
229
+ if(newVal != null) return newVal;
230
+ break;
231
+ default:
232
+ break;
233
+ }
234
+ return null;
235
+ }
236
+